type-plus 3.12.1 → 3.14.0
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/README.md +35 -33
- package/lib/ComposableTypes.d.ts +8 -0
- package/lib/ComposableTypes.js +3 -0
- package/lib/ComposableTypes.js.map +1 -0
- package/lib/JSONTypes.js +10 -5
- package/lib/JSONTypes.js.map +1 -1
- package/lib/assertion/assertType.d.ts +0 -46
- package/lib/assertion/assertType.js +4 -4
- package/lib/assertion/assertType.js.map +1 -1
- package/lib/class/isConstructor.js +2 -2
- package/lib/class/isConstructor.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/math/Subtract.d.ts +1 -1
- package/lib/nominal-types/Brand.js.map +1 -1
- package/lib/nominal-types/Flavor.js +1 -2
- package/lib/nominal-types/Flavor.js.map +1 -1
- package/lib/object/KnownKeys.d.ts +2 -1
- package/lib/object/KnownKeys.js +3 -0
- package/lib/object/KnownKeys.js.map +1 -1
- package/lib/object/facade.js +3 -0
- package/lib/object/facade.js.map +1 -1
- package/lib/object/getField.js.map +1 -1
- package/lib/object/hasKey.js.map +1 -1
- package/lib/object/mapProperties.js +1 -1
- package/lib/object/mapProperties.js.map +1 -1
- package/lib/object/omit.js +1 -1
- package/lib/object/omit.js.map +1 -1
- package/lib/object/pick.js +1 -1
- package/lib/object/pick.js.map +1 -1
- package/lib/object/typeOverrideIncompatible.js.map +1 -1
- package/lib/predicates/CanAssign.d.ts +2 -1
- package/lib/predicates/CanAssign.js.map +1 -1
- package/lib/predicates/index.d.ts +1 -0
- package/lib/predicates/index.js +1 -0
- package/lib/predicates/index.js.map +1 -1
- package/lib/predicates/isEmptyObject.d.ts +1 -0
- package/lib/predicates/isEmptyObject.js +3 -0
- package/lib/predicates/isEmptyObject.js.map +1 -0
- package/lib/predicates/isType.d.ts +4 -13
- package/lib/predicates/isType.js +3 -6
- package/lib/predicates/isType.js.map +1 -1
- package/lib/promise/isPromise.d.ts +1 -1
- package/lib/promise/isPromise.js +2 -1
- package/lib/promise/isPromise.js.map +1 -1
- package/lib/promise/mapSeries.js +1 -7
- package/lib/promise/mapSeries.js.map +1 -1
- package/lib/types/Number.js +10 -6
- package/lib/types/Number.js.map +1 -1
- package/lib/types/Object.d.ts +4 -20
- package/lib/types/Object.js +1 -1
- package/lib/types/Object.js.map +1 -1
- package/lib/types/String.js +10 -6
- package/lib/types/String.js.map +1 -1
- package/lib/types/Tuple.js +10 -6
- package/lib/types/Tuple.js.map +1 -1
- package/lib/types/Union.js +9 -5
- package/lib/types/Union.js.map +1 -1
- package/lib/types/analyze.js +3 -2
- package/lib/types/analyze.js.map +1 -1
- package/lib/types/check.js +2 -2
- package/lib/types/check.js.map +1 -1
- package/lib/types/conform.js +2 -2
- package/lib/types/conform.js.map +1 -1
- package/lib/types/getPlainAnalysisReport.js +28 -24
- package/lib/types/getPlainAnalysisReport.js.map +1 -1
- package/lib/types/optional.d.ts +4 -20
- package/lib/types/required.d.ts +8 -40
- package/lib/types/satisfy.js +2 -2
- package/lib/types/satisfy.js.map +1 -1
- package/libm/ComposableTypes.js +2 -0
- package/libm/ComposableTypes.js.map +1 -0
- package/libm/JSONTypes.js +1 -0
- package/libm/JSONTypes.js.map +1 -1
- package/libm/assertion/assertType.js.map +1 -1
- package/libm/class/isConstructor.js +2 -1
- package/libm/class/isConstructor.js.map +1 -1
- package/libm/index.js +1 -0
- package/libm/index.js.map +1 -1
- package/libm/nominal-types/Brand.js.map +1 -1
- package/libm/nominal-types/Flavor.js +1 -2
- package/libm/nominal-types/Flavor.js.map +1 -1
- package/libm/object/KnownKeys.js +3 -0
- package/libm/object/KnownKeys.js.map +1 -1
- package/libm/object/facade.js +3 -0
- package/libm/object/facade.js.map +1 -1
- package/libm/object/getField.js.map +1 -1
- package/libm/object/hasKey.js.map +1 -1
- package/libm/object/omit.js.map +1 -1
- package/libm/object/pick.js.map +1 -1
- package/libm/object/typeOverrideIncompatible.js.map +1 -1
- package/libm/predicates/CanAssign.js.map +1 -1
- package/libm/predicates/index.js +1 -0
- package/libm/predicates/index.js.map +1 -1
- package/libm/predicates/isEmptyObject.js +2 -0
- package/libm/predicates/isEmptyObject.js.map +1 -0
- package/libm/predicates/isType.js +4 -5
- package/libm/predicates/isType.js.map +1 -1
- package/libm/promise/isPromise.js +2 -1
- package/libm/promise/isPromise.js.map +1 -1
- package/libm/promise/mapSeries.js +1 -7
- package/libm/promise/mapSeries.js.map +1 -1
- package/package.json +26 -29
- package/src/ComposableTypes.spec.ts +29 -0
- package/src/ComposableTypes.ts +10 -0
- package/src/JSONTypes.ts +2 -1
- package/src/UnionToIntersection.ts +1 -1
- package/src/assertion/assertType.spec.ts +4 -1
- package/src/assertion/assertType.ts +2 -2
- package/src/class/AnyConstructor.spec.ts +2 -2
- package/src/class/isConstructor.spec.ts +7 -2
- package/src/class/isConstructor.ts +4 -3
- package/src/function/AnyFunction.spec.ts +9 -9
- package/src/functional/Maybe.spec.ts +2 -3
- package/src/functional/Maybe.ts +1 -0
- package/src/index.ts +1 -0
- package/src/math/Abs.spec.ts +1 -1
- package/src/math/Digit.spec.ts +2 -2
- package/src/math/Subtract.spec.ts +1 -1
- package/src/math/Subtract.ts +1 -1
- package/src/nominal-types/Brand.ts +3 -3
- package/src/nominal-types/Flavor.ts +3 -5
- package/src/object/ExcludePropType.spec.ts +1 -1
- package/src/object/KnownKeys.spec.ts +1 -1
- package/src/object/KnownKeys.ts +13 -5
- package/src/object/Partial.spec.ts +4 -5
- package/src/object/RecursiveIntersect.spec.ts +3 -3
- package/src/object/Required.spec.ts +2 -2
- package/src/object/facade.ts +3 -0
- package/src/object/getField.spec.ts +3 -3
- package/src/object/getField.ts +2 -2
- package/src/object/hasKey.ts +1 -1
- package/src/object/hasProperty.spec.ts +3 -3
- package/src/object/mapProperties.spec.ts +2 -2
- package/src/object/omit.spec.ts +5 -5
- package/src/object/omit.ts +1 -1
- package/src/object/pick.spec.ts +1 -1
- package/src/object/pick.ts +1 -1
- package/src/object/typeOverrideIncompatible.ts +1 -1
- package/src/predicates/CanAssign.ts +6 -3
- package/src/predicates/index.ts +1 -0
- package/src/predicates/isEmptyObject.spec.ts +15 -0
- package/src/predicates/isEmptyObject.ts +2 -0
- package/src/predicates/isType.spec.ts +2 -2
- package/src/predicates/isType.ts +7 -9
- package/src/promise/PromiseValue.spec.ts +1 -1
- package/src/promise/isPromise.ts +3 -2
- package/src/promise/mapSeries.ts +3 -7
- package/src/type-checker/AnyType.ts +1 -1
- package/src/types/satisfy.accept.ts +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Flavor.js","sourceRoot":"","sources":["../../src/nominal-types/Flavor.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,uEAAuE;AAGvE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAoBjC,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"Flavor.js","sourceRoot":"","sources":["../../src/nominal-types/Flavor.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,uEAAuE;AAGvE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAoBjC,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,OAAiB;IACpD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,UAAa,OAAU,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA,CAAC,CAAC,CAAA;IAC3F,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;QACnD,2EAA2E;QAC1E,OAAiC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;KACnD;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
package/libm/object/KnownKeys.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnownKeys.js","sourceRoot":"","sources":["../../src/object/KnownKeys.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"KnownKeys.js","sourceRoot":"","sources":["../../src/object/KnownKeys.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,uCAAuC;AACvC,8EAA8E"}
|
package/libm/object/facade.js
CHANGED
|
@@ -2,14 +2,17 @@ export function facade(subject, ...props) {
|
|
|
2
2
|
return props.reduce((p, k) => {
|
|
3
3
|
const prop = subject[k];
|
|
4
4
|
if (typeof prop === 'function') {
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
|
|
5
6
|
p[k] = prop.bind(subject);
|
|
6
7
|
}
|
|
7
8
|
else {
|
|
8
9
|
Object.defineProperty(p, k, {
|
|
9
10
|
get() {
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
10
12
|
return subject[k];
|
|
11
13
|
},
|
|
12
14
|
set(value) {
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-assignment
|
|
13
16
|
return subject[k] = value;
|
|
14
17
|
},
|
|
15
18
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/object/facade.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,MAAM,CAAsB,OAAU,EAAE,GAAG,KAAkB;IAC3E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;YAC9B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SAC1B;aACI;YACH,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;gBAC1B,GAAG;oBACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;gBACnB,CAAC;gBACD,GAAG,CAAC,KAAU;oBACZ,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;gBAC3B,CAAC;aACF,CAAC,CAAA;SACH;QACD,OAAO,CAAC,CAAA;IACV,CAAC,EAAE,EAAO,CAAC,CAAA;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/object/facade.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,MAAM,CAAsB,OAAU,EAAE,GAAG,KAAkB;IAC3E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;YAC9B,sGAAsG;YACtG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SAC1B;aACI;YACH,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;gBAC1B,GAAG;oBACD,+DAA+D;oBAC/D,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;gBACnB,CAAC;gBACD,GAAG,CAAC,KAAU;oBACZ,wGAAwG;oBACxG,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;gBAC3B,CAAC;aACF,CAAC,CAAA;SACH;QACD,OAAO,CAAC,CAAA;IACV,CAAC,EAAE,EAAO,CAAC,CAAA;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getField.js","sourceRoot":"","sources":["../../src/object/getField.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,QAAQ,CAKtB,OAAU,EAAE,GAAM,EAAE,YAAiB;IACrC,OAAO,OAAO,IAAK,
|
|
1
|
+
{"version":3,"file":"getField.js","sourceRoot":"","sources":["../../src/object/getField.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,QAAQ,CAKtB,OAAU,EAAE,GAAM,EAAE,YAAiB;IACrC,OAAO,OAAO,IAAK,OAA+C,CAAC,GAAG,CAAC,IAAI,YAAY,CAAA;AACzF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasKey.js","sourceRoot":"","sources":["../../src/object/hasKey.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,MAAM,CAAwC,OAAU,EAAE,GAAG,IAAS;IACpF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"hasKey.js","sourceRoot":"","sources":["../../src/object/hasKey.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,MAAM,CAAwC,OAAU,EAAE,GAAG,IAAS;IACpF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAA4B,CAAA;AACpE,CAAC"}
|
package/libm/object/omit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/object/omit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,WAAW,CAAA;AA8BlD,MAAM,UAAU,IAAI,CAAsB,OAAU,EAAE,GAAG,KAA0B;IACjF,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QAC9C,OAAO,CAAC,CAAA;IACV,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/object/omit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,WAAW,CAAA;AA8BlD,MAAM,UAAU,IAAI,CAAsB,OAAU,EAAE,GAAG,KAA0B;IACjF,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QAC9C,OAAO,CAAC,CAAA;IACV,CAAC,EAAE,EAAe,CAAC,CAAA;AACrB,CAAC"}
|
package/libm/object/pick.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pick.js","sourceRoot":"","sources":["../../src/object/pick.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAczC,MAAM,UAAU,IAAI,CAAsB,OAAU,EAAE,GAAG,KAA0B;IACjF,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QAC5C,OAAO,CAAC,CAAA;IACV,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"pick.js","sourceRoot":"","sources":["../../src/object/pick.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAczC,MAAM,UAAU,IAAI,CAAsB,OAAU,EAAE,GAAG,KAA0B;IACjF,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QAC5C,OAAO,CAAC,CAAA;IACV,CAAC,EAAE,EAAO,CAAC,CAAA;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeOverrideIncompatible.js","sourceRoot":"","sources":["../../src/object/typeOverrideIncompatible.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB;IACtC,OAAO,UAA+B,MAAS,EAAE,QAAqB;QACpE,OAAO;YACL,GAAG,MAAM;YACT,GAAG,QAAQ;
|
|
1
|
+
{"version":3,"file":"typeOverrideIncompatible.js","sourceRoot":"","sources":["../../src/object/typeOverrideIncompatible.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB;IACtC,OAAO,UAA+B,MAAS,EAAE,QAAqB;QACpE,OAAO;YACL,GAAG,MAAM;YACT,GAAG,QAAQ;SACZ,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CanAssign.js","sourceRoot":"","sources":["../../src/predicates/CanAssign.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CanAssign.js","sourceRoot":"","sources":["../../src/predicates/CanAssign.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,SAAS;IACvB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAA;AACnB,CAAC"}
|
package/libm/predicates/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,MAAM,CAAA;AACpB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,MAAM,CAAA;AACpB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEmptyObject.js","sourceRoot":"","sources":["../../src/predicates/isEmptyObject.ts"],"names":[],"mappings":""}
|
|
@@ -8,12 +8,11 @@ export function isType(subject, validator) {
|
|
|
8
8
|
}
|
|
9
9
|
return true;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return subject === sym || subject === true;
|
|
11
|
+
isType.t = function (subject) {
|
|
12
|
+
return subject === undefined || subject === true;
|
|
14
13
|
};
|
|
15
|
-
isType.f = function (subject
|
|
16
|
-
return subject ===
|
|
14
|
+
isType.f = function (subject) {
|
|
15
|
+
return subject === undefined || subject === false;
|
|
17
16
|
};
|
|
18
17
|
/**
|
|
19
18
|
* are types A and B equals/not equals.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isType.js","sourceRoot":"","sources":["../../src/predicates/isType.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"isType.js","sourceRoot":"","sources":["../../src/predicates/isType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAE,MAAM,UAAU,CAAA;AAMxD,MAAM,UAAU,MAAM,CAAC,OAAgB,EAAE,SAAsD;IAC7F,IAAI,SAAS,EAAE;QACb,IAAI,aAAa,CAAC,SAAS,CAAC;YAC1B,OAAO,OAAO,YAAY,SAAS,CAAA;;YAEnC,OAAO,SAAS,CAAC,OAAO,CAAC,CAAA;KAC5B;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,CAAC,GAAG,UAA0B,OAAW;IAC9C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAA;AAClD,CAAC,CAAA;AACD,MAAM,CAAC,CAAC,GAAG,UAA2B,OAAW;IAC/C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,CAAA;AACnD,CAAC,CAAA;AAED;;;;GAIG;AACH,6DAA6D;AAC7D,MAAM,CAAC,KAAK,GAAG,cAA2C,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isPromise.js","sourceRoot":"","sources":["../../src/promise/isPromise.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAU,
|
|
1
|
+
{"version":3,"file":"isPromise.js","sourceRoot":"","sources":["../../src/promise/isPromise.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAU,OAAgB;IACjD,aAAa;IACb,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,CAAA;AAC3D,CAAC"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
export function mapSeries(values, fn) {
|
|
2
|
-
|
|
3
|
-
return values.reduce((p, v) => {
|
|
4
|
-
return p.then(() => fn(v)).then((r) => {
|
|
5
|
-
results.push(r);
|
|
6
|
-
return results;
|
|
7
|
-
});
|
|
8
|
-
}, Promise.resolve());
|
|
2
|
+
return values.reduce((p, v) => p.then(r => fn(v).then(v => (r.push(v), r))), Promise.resolve([]));
|
|
9
3
|
}
|
|
10
4
|
//# sourceMappingURL=mapSeries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapSeries.js","sourceRoot":"","sources":["../../src/promise/mapSeries.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAa,MAAW,EAAE,EAA4B;IAC7E,
|
|
1
|
+
{"version":3,"file":"mapSeries.js","sourceRoot":"","sources":["../../src/promise/mapSeries.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAa,MAAW,EAAE,EAA4B;IAC7E,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACtD,OAAO,CAAC,OAAO,CAAM,EAAE,CAAC,CAAC,CAAA;AAC7B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "type-plus",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.14.0",
|
|
4
4
|
"description": "Provides additional types for `typescript`.",
|
|
5
5
|
"homepage": "https://github.com/unional/type-plus",
|
|
6
6
|
"bugs": {
|
|
@@ -30,14 +30,13 @@
|
|
|
30
30
|
"clean": "rimraf coverage lib libm",
|
|
31
31
|
"codacy": "cat coverage/lcov.info | codacy-coverage",
|
|
32
32
|
"codecov": "codecov",
|
|
33
|
-
"coverage": "jest --coverage",
|
|
33
|
+
"coverage": "tsc -p tsconfig.json && jest --coverage",
|
|
34
34
|
"dc": "yarn dependency-check",
|
|
35
35
|
"depcheck": "yarn dependency-check",
|
|
36
36
|
"dependency-check": "dependency-check . --unused --no-dev -i ts-toolbelt -i typescript && dependency-check . --missing --no-dev",
|
|
37
37
|
"lint": "eslint --ext=ts,js .",
|
|
38
38
|
"nuke": "yarn clean && rimraf node_modules",
|
|
39
|
-
"
|
|
40
|
-
"test": "jest",
|
|
39
|
+
"test": "tsc -p tsconfig.json && jest",
|
|
41
40
|
"verify": "yarn lint && yarn build && yarn dc && npx size-limit && yarn coverage",
|
|
42
41
|
"verify:ci": "yarn lint && yarn build && yarn dc && npx size-limit && yarn coverage --maxWorkers=2",
|
|
43
42
|
"watch": "jest --watch"
|
|
@@ -52,44 +51,42 @@
|
|
|
52
51
|
"unpartial": "^0.6.3"
|
|
53
52
|
},
|
|
54
53
|
"devDependencies": {
|
|
55
|
-
"@babel/cli": "^7.
|
|
56
|
-
"@babel/core": "^7.
|
|
57
|
-
"@babel/plugin-proposal-class-properties": "^7.
|
|
58
|
-
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.
|
|
59
|
-
"@babel/plugin-proposal-optional-chaining": "^7.
|
|
60
|
-
"@babel/preset-env": "^7.
|
|
61
|
-
"@babel/preset-typescript": "^7.
|
|
62
|
-
"@commitlint/cli": "^
|
|
63
|
-
"@commitlint/config-conventional": "^
|
|
64
|
-
"@size-limit/preset-small-lib": "^
|
|
65
|
-
"@types/jest": "^
|
|
54
|
+
"@babel/cli": "^7.16.0",
|
|
55
|
+
"@babel/core": "^7.16.0",
|
|
56
|
+
"@babel/plugin-proposal-class-properties": "^7.16.0",
|
|
57
|
+
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0",
|
|
58
|
+
"@babel/plugin-proposal-optional-chaining": "^7.16.0",
|
|
59
|
+
"@babel/preset-env": "^7.16.4",
|
|
60
|
+
"@babel/preset-typescript": "^7.16.0",
|
|
61
|
+
"@commitlint/cli": "^15.0.0",
|
|
62
|
+
"@commitlint/config-conventional": "^15.0.0",
|
|
63
|
+
"@size-limit/preset-small-lib": "^7.0.3",
|
|
64
|
+
"@types/jest": "^27.0.3",
|
|
66
65
|
"@unional/fixture": "^1.7.2",
|
|
67
66
|
"assertron": "^7.1.3",
|
|
68
|
-
"codecov": "^3.8.
|
|
69
|
-
"commitlint-circle": "^1.0.0",
|
|
67
|
+
"codecov": "^3.8.3",
|
|
70
68
|
"dependency-check": "^4.1.0",
|
|
71
69
|
"eslint": "^7.28.0",
|
|
72
|
-
"eslint-plugin-harmony": "^
|
|
73
|
-
"husky": "^
|
|
74
|
-
"is-ci": "^3.0.
|
|
75
|
-
"jest": "^27.
|
|
76
|
-
"jest-junit": "^
|
|
70
|
+
"eslint-plugin-harmony": "^6.0.0",
|
|
71
|
+
"husky": "^7.0.4",
|
|
72
|
+
"is-ci": "^3.0.1",
|
|
73
|
+
"jest": "^27.4.3",
|
|
74
|
+
"jest-junit": "^13.0.0",
|
|
77
75
|
"jest-progress-tracker": "^2.0.2",
|
|
78
|
-
"jest-validate": "^27.
|
|
76
|
+
"jest-validate": "^27.4.2",
|
|
79
77
|
"jest-watch-suspend": "^1.1.2",
|
|
80
78
|
"jest-watch-toggle-config": "^2.0.1",
|
|
81
|
-
"jest-watch-typeahead": "^0.
|
|
82
|
-
"npm-check-updates": "^
|
|
79
|
+
"jest-watch-typeahead": "^1.0.0",
|
|
80
|
+
"npm-check-updates": "^12.0.2",
|
|
83
81
|
"rimraf": "^3.0.2",
|
|
84
82
|
"satisfier": "^5.1.0",
|
|
85
|
-
"
|
|
86
|
-
"size-limit": "^4.11.0",
|
|
83
|
+
"size-limit": "^7.0.3",
|
|
87
84
|
"ts-toolbelt": "^9.6.0",
|
|
88
|
-
"typescript": "^4.
|
|
85
|
+
"typescript": "^4.5.2"
|
|
89
86
|
},
|
|
90
87
|
"size-limit": [
|
|
91
88
|
{
|
|
92
|
-
"limit": "
|
|
89
|
+
"limit": "15 kb"
|
|
93
90
|
}
|
|
94
91
|
]
|
|
95
92
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { assertType, canAssign, ComposableTypes, NonComposableTypes } from '.'
|
|
2
|
+
|
|
3
|
+
test('ComposableTypes includes object, array, and function', () => {
|
|
4
|
+
assertType<ComposableTypes>({})
|
|
5
|
+
assertType<ComposableTypes>([])
|
|
6
|
+
// function is composable because you can do
|
|
7
|
+
// `Object.assign(fn, { ... })
|
|
8
|
+
assertType<ComposableTypes>(() => { })
|
|
9
|
+
|
|
10
|
+
assertType.isTrue(canAssign<ComposableTypes>(false)(null))
|
|
11
|
+
assertType.isTrue(canAssign<ComposableTypes>(false)(undefined))
|
|
12
|
+
assertType.isTrue(canAssign<ComposableTypes>(false)(1))
|
|
13
|
+
assertType.isTrue(canAssign<ComposableTypes>(false)(true))
|
|
14
|
+
assertType.isTrue(canAssign<ComposableTypes>(false)(''))
|
|
15
|
+
assertType.isTrue(canAssign<ComposableTypes>(false)(Symbol()))
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
test('NonComposableType excludes object, array, and function', () => {
|
|
19
|
+
assertType<NonComposableTypes>(null)
|
|
20
|
+
assertType<NonComposableTypes>(undefined)
|
|
21
|
+
assertType<NonComposableTypes>(true)
|
|
22
|
+
assertType<NonComposableTypes>(1)
|
|
23
|
+
assertType<NonComposableTypes>('')
|
|
24
|
+
assertType<NonComposableTypes>(Symbol())
|
|
25
|
+
|
|
26
|
+
assertType.isTrue(canAssign<NonComposableTypes>(false)({}))
|
|
27
|
+
assertType.isTrue(canAssign<NonComposableTypes>(false)([]))
|
|
28
|
+
assertType.isTrue(canAssign<NonComposableTypes>(false)(() => { }))
|
|
29
|
+
})
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types that can contain custom properties.
|
|
3
|
+
*/
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
5
|
+
export type ComposableTypes = object | Function
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Types that cannot contain custom properties.
|
|
9
|
+
*/
|
|
10
|
+
export type NonComposableTypes = boolean | number | string | symbol | bigint | undefined | null
|
package/src/JSONTypes.ts
CHANGED
|
@@ -13,5 +13,6 @@ function get<T extends JSONTypes>(obj: JSONTypes, ...props: Array<string | numbe
|
|
|
13
13
|
if (props.length === 0) return obj as T
|
|
14
14
|
if (typeof obj !== 'object' || obj === null) return undefined
|
|
15
15
|
const p = props.shift()!
|
|
16
|
-
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
return get(obj[p], ...props) as T
|
|
17
18
|
}
|
|
@@ -28,7 +28,10 @@ describe('assertType()', () => {
|
|
|
28
28
|
test('Class as validator fails', () => {
|
|
29
29
|
class Foo { }
|
|
30
30
|
const s: unknown = 1
|
|
31
|
-
a.throws(
|
|
31
|
+
a.throws(
|
|
32
|
+
() => assertType(s, Foo),
|
|
33
|
+
(e: Error) => /subject fails to satisfy class Foo{}/.test(e.message)
|
|
34
|
+
)
|
|
32
35
|
})
|
|
33
36
|
test('subject can be type any', () => {
|
|
34
37
|
const s: any = false
|
|
@@ -9,9 +9,9 @@ import { AnyFunction } from '../function'
|
|
|
9
9
|
export function assertType<T>(subject: T): asserts subject is T
|
|
10
10
|
export function assertType<T>(subject: unknown, validator: (s: T) => boolean): asserts subject is T
|
|
11
11
|
export function assertType<T extends new (...args: any) => any>(subject: unknown, constructor: T): asserts subject is InstanceType<T>
|
|
12
|
-
export function assertType(subject:
|
|
12
|
+
export function assertType(subject: unknown, validator?: (s: any) => boolean) {
|
|
13
13
|
if (validator) {
|
|
14
|
-
if ((isConstructor(validator) && !(subject instanceof validator)) || !validator(subject
|
|
14
|
+
if ((isConstructor(validator) && !(subject instanceof validator)) || !validator(subject))
|
|
15
15
|
throw new TypeError(`subject fails to satisfy ${tersify(validator)}`)
|
|
16
16
|
}
|
|
17
17
|
return
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { AnyConstructor } from '..'
|
|
2
2
|
|
|
3
3
|
test('basic', () => {
|
|
4
|
-
const a
|
|
4
|
+
const a = function () { } as any as AnyConstructor
|
|
5
5
|
|
|
6
6
|
new a()
|
|
7
7
|
})
|
|
8
8
|
|
|
9
9
|
test('specify params with tuple', () => {
|
|
10
|
-
const a
|
|
10
|
+
const a = function () { } as any as AnyConstructor<[count: number, value: string]>
|
|
11
11
|
|
|
12
12
|
new a(1, 'a')
|
|
13
13
|
})
|
|
@@ -20,11 +20,16 @@ test('check throwing constructor is still true', () => {
|
|
|
20
20
|
})
|
|
21
21
|
|
|
22
22
|
test('constructor throwing non-error', () => {
|
|
23
|
-
class Foo { constructor() { throw 'abc' }}
|
|
23
|
+
class Foo { constructor() { throw 'abc' } }
|
|
24
24
|
expect(isConstructor(Foo)).toBe(true)
|
|
25
25
|
})
|
|
26
26
|
|
|
27
27
|
test('constructor throwing undefined', () => {
|
|
28
|
-
class Foo { constructor() { throw undefined }}
|
|
28
|
+
class Foo { constructor() { throw undefined } }
|
|
29
29
|
expect(isConstructor(Foo)).toBe(true)
|
|
30
30
|
})
|
|
31
|
+
|
|
32
|
+
test('class with params returns true', () => {
|
|
33
|
+
class Boo { constructor(public a: number) { } }
|
|
34
|
+
expect(isConstructor(Boo)).toBe(true)
|
|
35
|
+
})
|
|
@@ -2,10 +2,11 @@ import { AnyConstructor } from './AnyConstructor'
|
|
|
2
2
|
|
|
3
3
|
export function isConstructor(subject: unknown): subject is AnyConstructor {
|
|
4
4
|
try {
|
|
5
|
-
new (subject as
|
|
5
|
+
new (subject as AnyConstructor)()
|
|
6
6
|
}
|
|
7
|
-
catch (err) {
|
|
8
|
-
|
|
7
|
+
catch (err: any) {
|
|
8
|
+
const msg = err?.message as string | undefined
|
|
9
|
+
if (msg && msg.indexOf('is not a constructor') >= 0) {
|
|
9
10
|
return false
|
|
10
11
|
}
|
|
11
12
|
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { AnyFunction, assertType } from '..'
|
|
2
2
|
|
|
3
3
|
test('basic', () => {
|
|
4
|
-
|
|
4
|
+
function doCallback(cb: AnyFunction) {
|
|
5
|
+
cb()
|
|
6
|
+
}
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
// only any can be boolean here
|
|
10
|
-
assertType.isBoolean(result)
|
|
8
|
+
doCallback(() => { })
|
|
9
|
+
doCallback(_ => { })
|
|
10
|
+
doCallback((a: number, b: number) => a + b)
|
|
11
11
|
})
|
|
12
12
|
|
|
13
|
-
test('define param as tuple', () =>{
|
|
14
|
-
const foo: AnyFunction<[number,string]> = x => x
|
|
13
|
+
test('define param as tuple', () => {
|
|
14
|
+
const foo: AnyFunction<[number, string]> = x => x
|
|
15
15
|
foo(1, 'a')
|
|
16
16
|
})
|
|
17
17
|
|
|
18
18
|
test('define result type', () => {
|
|
19
|
-
const foo: AnyFunction<
|
|
19
|
+
const foo: AnyFunction<string[], string> = x => x
|
|
20
20
|
assertType.isString(foo('a'))
|
|
21
21
|
})
|
|
@@ -6,7 +6,7 @@ test('just(value) returns Maybe<T>', () => {
|
|
|
6
6
|
})
|
|
7
7
|
|
|
8
8
|
test('just(undefined) returns Maybe<T>', () => {
|
|
9
|
-
const b: boolean | undefined = undefined
|
|
9
|
+
const b: boolean | undefined = undefined
|
|
10
10
|
assertType<Maybe<boolean>>(just(b))
|
|
11
11
|
})
|
|
12
12
|
|
|
@@ -38,6 +38,5 @@ test('Just<number can assign to Maybe<number>', () => {
|
|
|
38
38
|
test('Just<string> is not assignable to Maybe<number>', () => {
|
|
39
39
|
assertType.isFalse(false as CanAssign<Just<'abc'>, Maybe<number>>)
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
// assertType.isFalse(canAssign<Maybe<number>>()(just('abc')))
|
|
41
|
+
assertType.isTrue(canAssign<Maybe<number>>(false)(just('abc')))
|
|
43
42
|
})
|
package/src/functional/Maybe.ts
CHANGED
package/src/index.ts
CHANGED
package/src/math/Abs.spec.ts
CHANGED
package/src/math/Digit.spec.ts
CHANGED
|
@@ -30,8 +30,8 @@ describe('DigitArray.ToNumber<DA>', () => {
|
|
|
30
30
|
})
|
|
31
31
|
|
|
32
32
|
test('multi digits', () => {
|
|
33
|
-
isType.t<Equal<DigitArray.ToNumber<[1, 2, 3, 4
|
|
34
|
-
isType.t<Equal<DigitArray.ToNumber<[1, 2, 3,
|
|
33
|
+
isType.t<Equal<DigitArray.ToNumber<[1, 2, 3, 4]>, 1234>>()
|
|
34
|
+
isType.t<Equal<DigitArray.ToNumber<[1, 2, 3, 5]>, 1235>>()
|
|
35
35
|
})
|
|
36
36
|
})
|
|
37
37
|
|
package/src/math/Subtract.ts
CHANGED
|
@@ -16,7 +16,7 @@ export type Subtract<A extends number, B extends number, Fail = never> =
|
|
|
16
16
|
PadLeft<DA, M, 0> extends infer PDA ? PDA extends number[] ?
|
|
17
17
|
PadLeft<DB, M, 0> extends infer PDB ? PDB extends number[] ?
|
|
18
18
|
SubtractDigitArray<[], PDA, PDB> extends infer Result ? Result extends number[] ?
|
|
19
|
-
Some<Result,
|
|
19
|
+
Some<Result, never, 'strict'> extends true ? Fail :
|
|
20
20
|
DigitArray.ToNumber<Result>
|
|
21
21
|
: Fail : Fail
|
|
22
22
|
: Fail : Fail
|
|
@@ -21,12 +21,12 @@ export function brand<B extends string>(type: B): <T>(subject: T) => Brand<B, Wi
|
|
|
21
21
|
* Creates a branded value of specified type.
|
|
22
22
|
*/
|
|
23
23
|
export function brand<B extends string, T>(type: B, subject: T): Brand<B, Widen<T>>
|
|
24
|
-
export function brand(type: string, subject?:
|
|
25
|
-
if (subject === undefined) return function (subject:
|
|
24
|
+
export function brand(type: string, subject?: unknown) {
|
|
25
|
+
if (subject === undefined) return function <T>(subject: T) { return brand(type, subject) }
|
|
26
26
|
|
|
27
27
|
if (typeof subject === 'object' && subject !== null) {
|
|
28
28
|
// if subject is not an object, the branding will exist only in type-level.
|
|
29
|
-
(subject as
|
|
29
|
+
(subject as { [typeSym]: string })[typeSym] = type
|
|
30
30
|
}
|
|
31
31
|
return subject
|
|
32
32
|
}
|
|
@@ -22,13 +22,11 @@ export function flavor<F extends string>(type: F): <T>(subject: T) => Flavor<F,
|
|
|
22
22
|
* Creates a branded value of specified type.
|
|
23
23
|
*/
|
|
24
24
|
export function flavor<F extends string, T>(type: F, subject: T): Flavor<F, Widen<T>>
|
|
25
|
-
export function flavor(type: string, subject?:
|
|
26
|
-
if (subject === undefined) {
|
|
27
|
-
return function (subject: any) { return flavor(type, subject) }
|
|
28
|
-
}
|
|
25
|
+
export function flavor(type: string, subject?: unknown) {
|
|
26
|
+
if (subject === undefined) return function <T>(subject: T) { return flavor(type, subject) }
|
|
29
27
|
if (typeof subject === 'object' && subject !== null) {
|
|
30
28
|
// if subject is not an object, the branding will exist only in type-level.
|
|
31
|
-
(subject as
|
|
29
|
+
(subject as { [typeSym]: string })[typeSym] = type
|
|
32
30
|
}
|
|
33
31
|
return subject
|
|
34
32
|
}
|
package/src/object/KnownKeys.ts
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
|
-
// by Klaus Meinhardt @ajafff
|
|
1
|
+
// Original by Klaus Meinhardt @ajafff
|
|
2
2
|
// known from Gerrit Birkeland @Gerrit0
|
|
3
3
|
// https://github.com/Microsoft/TypeScript/issues/25987#issuecomment-408339599
|
|
4
|
+
|
|
5
|
+
import { PrimitiveTypes } from '../PrimitiveTypes'
|
|
6
|
+
|
|
4
7
|
// https://github.com/microsoft/TypeScript/issues/25987#issuecomment-441224690
|
|
5
|
-
export type KnownKeys<T> =
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
export type KnownKeys<T> =
|
|
9
|
+
T extends PrimitiveTypes
|
|
10
|
+
? never
|
|
11
|
+
: {
|
|
12
|
+
[K in keyof T]: string extends K ? never : number extends K ? never : K
|
|
13
|
+
} extends { [_ in keyof T]: infer U }
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
15
|
+
? ({} extends U ? never : U)
|
|
16
|
+
: never
|
|
@@ -2,7 +2,7 @@ import { assertType, PartialExcept, PartialOmit, PartialPick } from '..'
|
|
|
2
2
|
|
|
3
3
|
test('work on primitive type', () => {
|
|
4
4
|
type Foo = PartialPick<number, 'toFixed'>
|
|
5
|
-
const x: Foo = 1
|
|
5
|
+
const x: Foo = 1
|
|
6
6
|
assertType<typeof x['toFixed']>(1 as unknown as 1['toFixed'] | undefined)
|
|
7
7
|
})
|
|
8
8
|
|
|
@@ -13,7 +13,7 @@ test('make picked properties optional', () => {
|
|
|
13
13
|
c: number,
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
const y: PartialPick<Foo, 'a'> = { b: 1, c: 2 }
|
|
16
|
+
const y: PartialPick<Foo, 'a'> = { b: 1, c: 2 }
|
|
17
17
|
|
|
18
18
|
y.a = undefined
|
|
19
19
|
assertType.noUndefined(y.b)
|
|
@@ -27,8 +27,7 @@ test('make not specified properties optional', () => {
|
|
|
27
27
|
c: number,
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
const y: PartialExcept<Foo, 'a'> = { a: 1 }
|
|
31
|
-
|
|
30
|
+
const y: PartialExcept<Foo, 'a'> = { a: 1 }
|
|
32
31
|
assertType.noUndefined(y.a)
|
|
33
32
|
y.b = undefined
|
|
34
33
|
y.c = undefined
|
|
@@ -42,7 +41,7 @@ test('make not specified properties optional', () => {
|
|
|
42
41
|
c: number,
|
|
43
42
|
}
|
|
44
43
|
|
|
45
|
-
const y: PartialOmit<Foo, 'a'> = { a: 1 }
|
|
44
|
+
const y: PartialOmit<Foo, 'a'> = { a: 1 }
|
|
46
45
|
|
|
47
46
|
assertType.noUndefined(y.a)
|
|
48
47
|
y.b = undefined
|