@ts-type/object-freeze 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/README.md +30 -3
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.development.cjs +11 -1
- package/dist/index.cjs.development.cjs.map +1 -1
- package/dist/index.cjs.production.min.cjs +11 -1
- package/dist/index.cjs.production.min.cjs.map +1 -1
- package/dist/index.d.ts +42 -0
- package/dist/index.esm.mjs.map +1 -1
- package/dist/index.umd.development.cjs +11 -1
- package/dist/index.umd.development.cjs.map +1 -1
- package/dist/index.umd.production.min.cjs +13 -1
- package/dist/index.umd.production.min.cjs.map +1 -1
- package/package.json +10 -10
- package/src/index.js.map +1 -1
- package/src/index.ts +52 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,34 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.0.6](https://github.com/bluelovers/ws-ts-type/compare/@ts-type/object-freeze@1.0.5...@ts-type/object-freeze@1.0.6) (2026-03-07)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @ts-type/object-freeze
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [1.0.5](https://github.com/bluelovers/ws-ts-type/compare/@ts-type/object-freeze@1.0.4...@ts-type/object-freeze@1.0.5) (2026-03-07)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### 📚 Documentation
|
|
19
|
+
|
|
20
|
+
* enhance documentation and JSDoc comments across multiple packages ([88ee99b](https://github.com/bluelovers/ws-ts-type/commit/88ee99b3a489645ca53093357cc3523dbe7996e0))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### 🛠 Build System
|
|
24
|
+
|
|
25
|
+
* 更新多個套件的 test 指令為 jest ([61ea53b](https://github.com/bluelovers/ws-ts-type/commit/61ea53bf15fc3ed0e216793200604ae5a52079c9))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### ♻️ Chores
|
|
29
|
+
|
|
30
|
+
* migrate from yarn to pnpm and enhance test infrastructure ([8a5daa2](https://github.com/bluelovers/ws-ts-type/commit/8a5daa2f2022eaf025c3349d4fe5dc8971f8c077))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
6
34
|
## [1.0.4](https://github.com/bluelovers/ws-ts-type/compare/@ts-type/object-freeze@1.0.3...@ts-type/object-freeze@1.0.4) (2022-10-10)
|
|
7
35
|
|
|
8
36
|
|
package/README.md
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @ts-type/object-freeze
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.freeze 的類型安全包裝,提供精確的唯讀類型
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Type-safe wrapper for Object.freeze with precise readonly types
|
|
6
|
+
|
|
7
|
+
## 功能特點 / Features
|
|
8
|
+
|
|
9
|
+
- 凍結陣列並回傳唯讀類型
|
|
10
|
+
- Freeze array and return readonly type
|
|
11
|
+
- 凍結物件並回傳唯讀類型
|
|
12
|
+
- Freeze object and return readonly type
|
|
13
|
+
- 支援函式、陣列、元組等多種類型
|
|
14
|
+
- Support function, array, tuple and more types
|
|
15
|
+
|
|
16
|
+
## 安裝 / Install
|
|
6
17
|
|
|
7
18
|
```bash
|
|
8
19
|
yarn add @ts-type/object-freeze
|
|
@@ -10,3 +21,19 @@ yarn-tool add @ts-type/object-freeze
|
|
|
10
21
|
yt add @ts-type/object-freeze
|
|
11
22
|
```
|
|
12
23
|
|
|
24
|
+
## 使用範例 / Usage Example
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { freezeArray, freezeObject } from '@ts-type/object-freeze';
|
|
28
|
+
|
|
29
|
+
// 凍結陣列
|
|
30
|
+
const arr = [1, 2, 3];
|
|
31
|
+
const frozenArr = freezeArray(arr);
|
|
32
|
+
// TypeScript 知道 frozenArr 是唯讀陣列
|
|
33
|
+
|
|
34
|
+
// 凍結物件
|
|
35
|
+
const obj = { name: 'John', age: 30 };
|
|
36
|
+
const frozenObj = freezeObject(obj);
|
|
37
|
+
// TypeScript 知道 frozenObj 是 Readonly<{name: string, age: number}>
|
|
38
|
+
```
|
|
39
|
+
|
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
'use strict'
|
|
3
3
|
|
|
4
|
-
if (typeof process !== 'undefined' && process.env.NODE_ENV
|
|
5
|
-
module.exports = require('./index.cjs.production.min.cjs')
|
|
6
|
-
} else {
|
|
4
|
+
if (typeof process !== 'undefined' && process.env.NODE_ENV !== 'production') {
|
|
7
5
|
module.exports = require('./index.cjs.development.cjs')
|
|
6
|
+
} else {
|
|
7
|
+
module.exports = require('./index.cjs.production.min.cjs')
|
|
8
8
|
}
|
|
@@ -5,11 +5,21 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
function freezeArray(obj) {
|
|
6
6
|
return Object.freeze(obj);
|
|
7
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* 凍結物件並回傳唯讀類型(通用實現)
|
|
10
|
+
* Freeze object and return readonly type (generic implementation)
|
|
11
|
+
*
|
|
12
|
+
* 使用 Object.freeze 凍結物件,使其不可變
|
|
13
|
+
* Uses Object.freeze to freeze the object to make it immutable
|
|
14
|
+
*
|
|
15
|
+
* @param obj - 要凍結的物件 / Object to freeze
|
|
16
|
+
* @returns 凍結後的物件 / Frozen object
|
|
17
|
+
*/
|
|
8
18
|
function freezeObject(obj) {
|
|
9
19
|
return Object.freeze(obj);
|
|
10
20
|
}
|
|
11
21
|
|
|
12
|
-
exports
|
|
22
|
+
exports.default = freezeObject;
|
|
13
23
|
exports.freezeArray = freezeArray;
|
|
14
24
|
exports.freezeObject = freezeObject;
|
|
15
25
|
//# sourceMappingURL=index.cjs.development.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.development.cjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\nexport function freezeObject<T extends Function>(f: T): T\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\nexport function freezeObject<T>(o: T): Readonly<T>\n\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":[
|
|
1
|
+
{"version":3,"file":"index.cjs.development.cjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\n/**\n * 凍結陣列並回傳唯讀類型\n * Freeze array and return readonly type\n *\n * @param obj - 要凍結的陣列 / Array to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\n/**\n * 凍結物件並回傳唯讀類型(空元組版本)\n * Freeze object and return readonly type (empty tuple version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\n/**\n * 凍結物件並回傳唯讀類型(陣列版本)\n * Freeze object and return readonly type (array version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\n/**\n * 凍結函式並保持原類型\n * Freeze function and preserve original type\n *\n * @param f - 要凍結的函式 / Function to freeze\n * @returns 凍結後的函式 / Frozen function\n */\nexport function freezeObject<T extends Function>(f: T): T\n/**\n * 凍結物件並回傳唯讀類型(鍵值物件版本)\n * Freeze object and return readonly type (key-value object version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\n/**\n * 凍結物件並回傳唯讀類型(通用版本)\n * Freeze object and return readonly type (generic version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T>(o: T): Readonly<T>\n\n/**\n * 凍結物件並回傳唯讀類型(通用實現)\n * Freeze object and return readonly type (generic implementation)\n *\n * 使用 Object.freeze 凍結物件,使其不可變\n * Uses Object.freeze to freeze the object to make it immutable\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 凍結後的物件 / Frozen object\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":[],"mappings":";;;;;;AAsEA,CAAA;;AAAA;;AAKA;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function freezeObject(e) {
|
|
4
|
+
return Object.freeze(e);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: !0
|
|
9
|
+
}), exports.default = freezeObject, exports.freezeArray = function freezeArray(e) {
|
|
10
|
+
return Object.freeze(e);
|
|
11
|
+
}, exports.freezeObject = freezeObject;
|
|
2
12
|
//# sourceMappingURL=index.cjs.production.min.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.production.min.cjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\nexport function freezeObject<T extends Function>(f: T): T\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\nexport function freezeObject<T>(o: T): Readonly<T>\n\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":[
|
|
1
|
+
{"version":3,"file":"index.cjs.production.min.cjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\n/**\n * 凍結陣列並回傳唯讀類型\n * Freeze array and return readonly type\n *\n * @param obj - 要凍結的陣列 / Array to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\n/**\n * 凍結物件並回傳唯讀類型(空元組版本)\n * Freeze object and return readonly type (empty tuple version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\n/**\n * 凍結物件並回傳唯讀類型(陣列版本)\n * Freeze object and return readonly type (array version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\n/**\n * 凍結函式並保持原類型\n * Freeze function and preserve original type\n *\n * @param f - 要凍結的函式 / Function to freeze\n * @returns 凍結後的函式 / Frozen function\n */\nexport function freezeObject<T extends Function>(f: T): T\n/**\n * 凍結物件並回傳唯讀類型(鍵值物件版本)\n * Freeze object and return readonly type (key-value object version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\n/**\n * 凍結物件並回傳唯讀類型(通用版本)\n * Freeze object and return readonly type (generic version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T>(o: T): Readonly<T>\n\n/**\n * 凍結物件並回傳唯讀類型(通用實現)\n * Freeze object and return readonly type (generic implementation)\n *\n * 使用 Object.freeze 凍結物件,使其不可變\n * Uses Object.freeze to freeze the object to make it immutable\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 凍結後的物件 / Frozen object\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":[],"mappings":";;;;;;;;;;AAsEA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,55 @@
|
|
|
1
1
|
import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';
|
|
2
2
|
import { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';
|
|
3
3
|
import { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';
|
|
4
|
+
/**
|
|
5
|
+
* 凍結陣列並回傳唯讀類型
|
|
6
|
+
* Freeze array and return readonly type
|
|
7
|
+
*
|
|
8
|
+
* @param obj - 要凍結的陣列 / Array to freeze
|
|
9
|
+
* @returns 唯讀陣列類型 / Readonly array type
|
|
10
|
+
*/
|
|
4
11
|
export declare function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>;
|
|
5
12
|
export declare function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>;
|
|
13
|
+
/**
|
|
14
|
+
* 凍結物件並回傳唯讀類型(空元組版本)
|
|
15
|
+
* Freeze object and return readonly type (empty tuple version)
|
|
16
|
+
*
|
|
17
|
+
* @param obj - 要凍結的物件 / Object to freeze
|
|
18
|
+
* @returns 唯讀物件類型 / Readonly object type
|
|
19
|
+
*/
|
|
6
20
|
export declare function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>;
|
|
21
|
+
/**
|
|
22
|
+
* 凍結物件並回傳唯讀類型(陣列版本)
|
|
23
|
+
* Freeze object and return readonly type (array version)
|
|
24
|
+
*
|
|
25
|
+
* @param obj - 要凍結的物件 / Object to freeze
|
|
26
|
+
* @returns 唯讀陣列類型 / Readonly array type
|
|
27
|
+
*/
|
|
7
28
|
export declare function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>;
|
|
29
|
+
/**
|
|
30
|
+
* 凍結函式並保持原類型
|
|
31
|
+
* Freeze function and preserve original type
|
|
32
|
+
*
|
|
33
|
+
* @param f - 要凍結的函式 / Function to freeze
|
|
34
|
+
* @returns 凍結後的函式 / Frozen function
|
|
35
|
+
*/
|
|
8
36
|
export declare function freezeObject<T extends Function>(f: T): T;
|
|
37
|
+
/**
|
|
38
|
+
* 凍結物件並回傳唯讀類型(鍵值物件版本)
|
|
39
|
+
* Freeze object and return readonly type (key-value object version)
|
|
40
|
+
*
|
|
41
|
+
* @param o - 要凍結的物件 / Object to freeze
|
|
42
|
+
* @returns 唯讀物件類型 / Readonly object type
|
|
43
|
+
*/
|
|
9
44
|
export declare function freezeObject<T extends {
|
|
10
45
|
[idx: string]: U | null | undefined | object;
|
|
11
46
|
}, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>;
|
|
47
|
+
/**
|
|
48
|
+
* 凍結物件並回傳唯讀類型(通用版本)
|
|
49
|
+
* Freeze object and return readonly type (generic version)
|
|
50
|
+
*
|
|
51
|
+
* @param o - 要凍結的物件 / Object to freeze
|
|
52
|
+
* @returns 唯讀物件類型 / Readonly object type
|
|
53
|
+
*/
|
|
12
54
|
export declare function freezeObject<T>(o: T): Readonly<T>;
|
|
13
55
|
export default freezeObject;
|
package/dist/index.esm.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.mjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\nexport function freezeObject<T extends Function>(f: T): T\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\nexport function freezeObject<T>(o: T): Readonly<T>\n\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":[
|
|
1
|
+
{"version":3,"file":"index.esm.mjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\n/**\n * 凍結陣列並回傳唯讀類型\n * Freeze array and return readonly type\n *\n * @param obj - 要凍結的陣列 / Array to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\n/**\n * 凍結物件並回傳唯讀類型(空元組版本)\n * Freeze object and return readonly type (empty tuple version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\n/**\n * 凍結物件並回傳唯讀類型(陣列版本)\n * Freeze object and return readonly type (array version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\n/**\n * 凍結函式並保持原類型\n * Freeze function and preserve original type\n *\n * @param f - 要凍結的函式 / Function to freeze\n * @returns 凍結後的函式 / Frozen function\n */\nexport function freezeObject<T extends Function>(f: T): T\n/**\n * 凍結物件並回傳唯讀類型(鍵值物件版本)\n * Freeze object and return readonly type (key-value object version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\n/**\n * 凍結物件並回傳唯讀類型(通用版本)\n * Freeze object and return readonly type (generic version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T>(o: T): Readonly<T>\n\n/**\n * 凍結物件並回傳唯讀類型(通用實現)\n * Freeze object and return readonly type (generic implementation)\n *\n * 使用 Object.freeze 凍結物件,使其不可變\n * Uses Object.freeze to freeze the object to make it immutable\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 凍結後的物件 / Frozen object\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":[],"mappings":";;AAsEA;;;;;;"}
|
|
@@ -7,11 +7,21 @@
|
|
|
7
7
|
function freezeArray(obj) {
|
|
8
8
|
return Object.freeze(obj);
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* 凍結物件並回傳唯讀類型(通用實現)
|
|
12
|
+
* Freeze object and return readonly type (generic implementation)
|
|
13
|
+
*
|
|
14
|
+
* 使用 Object.freeze 凍結物件,使其不可變
|
|
15
|
+
* Uses Object.freeze to freeze the object to make it immutable
|
|
16
|
+
*
|
|
17
|
+
* @param obj - 要凍結的物件 / Object to freeze
|
|
18
|
+
* @returns 凍結後的物件 / Frozen object
|
|
19
|
+
*/
|
|
10
20
|
function freezeObject(obj) {
|
|
11
21
|
return Object.freeze(obj);
|
|
12
22
|
}
|
|
13
23
|
|
|
14
|
-
exports
|
|
24
|
+
exports.default = freezeObject;
|
|
15
25
|
exports.freezeArray = freezeArray;
|
|
16
26
|
exports.freezeObject = freezeObject;
|
|
17
27
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.development.cjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\nexport function freezeObject<T extends Function>(f: T): T\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\nexport function freezeObject<T>(o: T): Readonly<T>\n\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":[
|
|
1
|
+
{"version":3,"file":"index.umd.development.cjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\n/**\n * 凍結陣列並回傳唯讀類型\n * Freeze array and return readonly type\n *\n * @param obj - 要凍結的陣列 / Array to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\n/**\n * 凍結物件並回傳唯讀類型(空元組版本)\n * Freeze object and return readonly type (empty tuple version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\n/**\n * 凍結物件並回傳唯讀類型(陣列版本)\n * Freeze object and return readonly type (array version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\n/**\n * 凍結函式並保持原類型\n * Freeze function and preserve original type\n *\n * @param f - 要凍結的函式 / Function to freeze\n * @returns 凍結後的函式 / Frozen function\n */\nexport function freezeObject<T extends Function>(f: T): T\n/**\n * 凍結物件並回傳唯讀類型(鍵值物件版本)\n * Freeze object and return readonly type (key-value object version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\n/**\n * 凍結物件並回傳唯讀類型(通用版本)\n * Freeze object and return readonly type (generic version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T>(o: T): Readonly<T>\n\n/**\n * 凍結物件並回傳唯讀類型(通用實現)\n * Freeze object and return readonly type (generic implementation)\n *\n * 使用 Object.freeze 凍結物件,使其不可變\n * Uses Object.freeze to freeze the object to make it immutable\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 凍結後的物件 / Frozen object\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":[],"mappings":";;;;;;;;CAsEA,CAAA;;CAAA;;CAKA;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,14 @@
|
|
|
1
|
-
!function(e,
|
|
1
|
+
!function(e, t) {
|
|
2
|
+
"object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define([ "exports" ], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).TsTypeObjectFreeze = {});
|
|
3
|
+
}(this, function(e) {
|
|
4
|
+
"use strict";
|
|
5
|
+
function freezeObject(e) {
|
|
6
|
+
return Object.freeze(e);
|
|
7
|
+
}
|
|
8
|
+
e.default = freezeObject, e.freezeArray = function freezeArray(e) {
|
|
9
|
+
return Object.freeze(e);
|
|
10
|
+
}, e.freezeObject = freezeObject, Object.defineProperty(e, "__esModule", {
|
|
11
|
+
value: !0
|
|
12
|
+
});
|
|
13
|
+
});
|
|
2
14
|
//# sourceMappingURL=index.umd.production.min.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.production.min.cjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\nexport function freezeObject<T extends Function>(f: T): T\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\nexport function freezeObject<T>(o: T): Readonly<T>\n\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":[
|
|
1
|
+
{"version":3,"file":"index.umd.production.min.cjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\n/**\n * 凍結陣列並回傳唯讀類型\n * Freeze array and return readonly type\n *\n * @param obj - 要凍結的陣列 / Array to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\n/**\n * 凍結物件並回傳唯讀類型(空元組版本)\n * Freeze object and return readonly type (empty tuple version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\n/**\n * 凍結物件並回傳唯讀類型(陣列版本)\n * Freeze object and return readonly type (array version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\n/**\n * 凍結函式並保持原類型\n * Freeze function and preserve original type\n *\n * @param f - 要凍結的函式 / Function to freeze\n * @returns 凍結後的函式 / Frozen function\n */\nexport function freezeObject<T extends Function>(f: T): T\n/**\n * 凍結物件並回傳唯讀類型(鍵值物件版本)\n * Freeze object and return readonly type (key-value object version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\n/**\n * 凍結物件並回傳唯讀類型(通用版本)\n * Freeze object and return readonly type (generic version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T>(o: T): Readonly<T>\n\n/**\n * 凍結物件並回傳唯讀類型(通用實現)\n * Freeze object and return readonly type (generic implementation)\n *\n * 使用 Object.freeze 凍結物件,使其不可變\n * Uses Object.freeze to freeze the object to make it immutable\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 凍結後的物件 / Frozen object\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"],"names":[],"mappings":";;;;;;;;;AAsEA;;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ts-type/object-freeze",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.6",
|
|
4
|
+
"description": "Object.freeze 的類型安全包裝,提供精確的唯讀類型 | Type-safe wrapper for Object.freeze with precise readonly types",
|
|
5
5
|
"keywords": [
|
|
6
6
|
".d.ts",
|
|
7
7
|
"@types",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"exports": {
|
|
45
45
|
".": {
|
|
46
46
|
"types": "./dist/index.d.ts",
|
|
47
|
-
"
|
|
48
|
-
"
|
|
47
|
+
"require": "./dist/index.cjs",
|
|
48
|
+
"import": "./dist/index.esm.mjs"
|
|
49
49
|
},
|
|
50
50
|
"./package.json": "./package.json",
|
|
51
51
|
"./src/*": "./src/*"
|
|
@@ -63,13 +63,14 @@
|
|
|
63
63
|
"lint": "yarn run lint:eslint",
|
|
64
64
|
"lint:eslint": "ynpx eslint --ext .ts,.tsx,.mts,.cts ./",
|
|
65
65
|
"pretest": "echo pretest",
|
|
66
|
-
"test": "
|
|
66
|
+
"test": "jest --passWithNoTests",
|
|
67
67
|
"test:jest": "jest --passWithNoTests",
|
|
68
|
+
"test:jest:coverage": "node --run test:jest -- --coverage",
|
|
68
69
|
"test:jest:snapshot": "yarn run test:jest -- -u",
|
|
69
70
|
"test:mocha": "ynpx --quiet -p ts-node -p mocha mocha -- --require ts-node/register \"!(node_modules)/**/*.{test,spec}.{ts,tsx}\"",
|
|
70
71
|
"test:snapshot": "yarn run test -- -u",
|
|
71
72
|
"test:tsd": "ynpx tsd",
|
|
72
|
-
"test:tsdx": "
|
|
73
|
+
"test:tsdx": "tsdx test --passWithNoTests",
|
|
73
74
|
"posttest": "yarn run build",
|
|
74
75
|
"build": "yarn run build:tsdx && yarn run build:dts:tsc",
|
|
75
76
|
"build:dts:bundle": "ynpx dts-bundle-generator -o ./dist/index.d.ts ./src/index.ts --no-banner --inline-declare-global & echo build:dts:bundle",
|
|
@@ -77,7 +78,7 @@
|
|
|
77
78
|
"build:dts:tsc": "yarn run build:dts:tsc:emit && yarn run build:dts:copy",
|
|
78
79
|
"build:dts:tsc:emit": "tsc --emitDeclarationOnly --declaration --noEmit false",
|
|
79
80
|
"build:microbundle": "ynpx microbundle --target node",
|
|
80
|
-
"build:tsdx": "
|
|
81
|
+
"build:tsdx": "tsdx build --target node --name index",
|
|
81
82
|
"ci:install": "echo ci:install",
|
|
82
83
|
"ci:build": "echo ci:build",
|
|
83
84
|
"preversion": "echo preversion && yarn run test",
|
|
@@ -98,11 +99,10 @@
|
|
|
98
99
|
"tsc:showConfig": "ynpx get-current-tsconfig -p"
|
|
99
100
|
},
|
|
100
101
|
"dependencies": {
|
|
101
|
-
"ts-type": "^3.0.
|
|
102
|
+
"ts-type": "^3.0.3"
|
|
102
103
|
},
|
|
103
|
-
"packageManager": "yarn@^1.22.11",
|
|
104
104
|
"publishConfig": {
|
|
105
105
|
"access": "public"
|
|
106
106
|
},
|
|
107
|
-
"gitHead": "
|
|
107
|
+
"gitHead": "4ef633a04245358fed59633c9d9ceff0607d30d3"
|
|
108
108
|
}
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;AAaA,kCAGC;AAsDD,oCAGC;AA5DD,SAAgB,WAAW,CAA+C,GAAM;IAE/E,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AA4CD;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAA+C,GAAM;IAEhF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AAED,kBAAe,YAAY,CAAA","sourcesContent":["import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';\nimport { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';\nimport { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';\n\n/**\n * 凍結陣列並回傳唯讀類型\n * Freeze array and return readonly type\n *\n * @param obj - 要凍結的陣列 / Array to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\nexport function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\n/**\n * 凍結物件並回傳唯讀類型(空元組版本)\n * Freeze object and return readonly type (empty tuple version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>\n/**\n * 凍結物件並回傳唯讀類型(陣列版本)\n * Freeze object and return readonly type (array version)\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 唯讀陣列類型 / Readonly array type\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>\n\n/**\n * 凍結函式並保持原類型\n * Freeze function and preserve original type\n *\n * @param f - 要凍結的函式 / Function to freeze\n * @returns 凍結後的函式 / Frozen function\n */\nexport function freezeObject<T extends Function>(f: T): T\n/**\n * 凍結物件並回傳唯讀類型(鍵值物件版本)\n * Freeze object and return readonly type (key-value object version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>\n/**\n * 凍結物件並回傳唯讀類型(通用版本)\n * Freeze object and return readonly type (generic version)\n *\n * @param o - 要凍結的物件 / Object to freeze\n * @returns 唯讀物件類型 / Readonly object type\n */\nexport function freezeObject<T>(o: T): Readonly<T>\n\n/**\n * 凍結物件並回傳唯讀類型(通用實現)\n * Freeze object and return readonly type (generic implementation)\n *\n * 使用 Object.freeze 凍結物件,使其不可變\n * Uses Object.freeze to freeze the object to make it immutable\n *\n * @param obj - 要凍結的物件 / Object to freeze\n * @returns 凍結後的物件 / Frozen object\n */\nexport function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)\n{\n\treturn Object.freeze(obj)\n}\n\nexport default freezeObject\n"]}
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,13 @@ import { ITSEmptyTuple } from 'ts-type/lib/type/tuple/empty';
|
|
|
2
2
|
import { ITSToReadonlyArray } from 'ts-type/lib/helper/array/readonly';
|
|
3
3
|
import { ITSArrayListMaybeReadonly } from 'ts-type/lib/type/base';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* 凍結陣列並回傳唯讀類型
|
|
7
|
+
* Freeze array and return readonly type
|
|
8
|
+
*
|
|
9
|
+
* @param obj - 要凍結的陣列 / Array to freeze
|
|
10
|
+
* @returns 唯讀陣列類型 / Readonly array type
|
|
11
|
+
*/
|
|
5
12
|
export function freezeArray<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>
|
|
6
13
|
export function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>
|
|
7
14
|
export function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)
|
|
@@ -9,13 +16,58 @@ export function freezeArray<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T
|
|
|
9
16
|
return Object.freeze(obj)
|
|
10
17
|
}
|
|
11
18
|
|
|
19
|
+
/**
|
|
20
|
+
* 凍結物件並回傳唯讀類型(空元組版本)
|
|
21
|
+
* Freeze object and return readonly type (empty tuple version)
|
|
22
|
+
*
|
|
23
|
+
* @param obj - 要凍結的物件 / Object to freeze
|
|
24
|
+
* @returns 唯讀物件類型 / Readonly object type
|
|
25
|
+
*/
|
|
12
26
|
export function freezeObject<T extends ITSEmptyTuple>(obj: T): ITSToReadonlyArray<T>
|
|
27
|
+
/**
|
|
28
|
+
* 凍結物件並回傳唯讀類型(陣列版本)
|
|
29
|
+
* Freeze object and return readonly type (array version)
|
|
30
|
+
*
|
|
31
|
+
* @param obj - 要凍結的物件 / Object to freeze
|
|
32
|
+
* @returns 唯讀陣列類型 / Readonly array type
|
|
33
|
+
*/
|
|
13
34
|
export function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T): ITSToReadonlyArray<T>
|
|
14
35
|
|
|
36
|
+
/**
|
|
37
|
+
* 凍結函式並保持原類型
|
|
38
|
+
* Freeze function and preserve original type
|
|
39
|
+
*
|
|
40
|
+
* @param f - 要凍結的函式 / Function to freeze
|
|
41
|
+
* @returns 凍結後的函式 / Frozen function
|
|
42
|
+
*/
|
|
15
43
|
export function freezeObject<T extends Function>(f: T): T
|
|
44
|
+
/**
|
|
45
|
+
* 凍結物件並回傳唯讀類型(鍵值物件版本)
|
|
46
|
+
* Freeze object and return readonly type (key-value object version)
|
|
47
|
+
*
|
|
48
|
+
* @param o - 要凍結的物件 / Object to freeze
|
|
49
|
+
* @returns 唯讀物件類型 / Readonly object type
|
|
50
|
+
*/
|
|
16
51
|
export function freezeObject<T extends { [idx: string]: U | null | undefined | object }, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>
|
|
52
|
+
/**
|
|
53
|
+
* 凍結物件並回傳唯讀類型(通用版本)
|
|
54
|
+
* Freeze object and return readonly type (generic version)
|
|
55
|
+
*
|
|
56
|
+
* @param o - 要凍結的物件 / Object to freeze
|
|
57
|
+
* @returns 唯讀物件類型 / Readonly object type
|
|
58
|
+
*/
|
|
17
59
|
export function freezeObject<T>(o: T): Readonly<T>
|
|
18
60
|
|
|
61
|
+
/**
|
|
62
|
+
* 凍結物件並回傳唯讀類型(通用實現)
|
|
63
|
+
* Freeze object and return readonly type (generic implementation)
|
|
64
|
+
*
|
|
65
|
+
* 使用 Object.freeze 凍結物件,使其不可變
|
|
66
|
+
* Uses Object.freeze to freeze the object to make it immutable
|
|
67
|
+
*
|
|
68
|
+
* @param obj - 要凍結的物件 / Object to freeze
|
|
69
|
+
* @returns 凍結後的物件 / Frozen object
|
|
70
|
+
*/
|
|
19
71
|
export function freezeObject<T extends ITSArrayListMaybeReadonly<unknown>>(obj: T)
|
|
20
72
|
{
|
|
21
73
|
return Object.freeze(obj)
|