typescript-is
typescript-is copied to clipboard
Generics like Row<T> { value: T } don't work with createAssertType, although many other ones work perfectly
I noticed that some generics don't work when fed to createAssertType(), although many other generics work perfectly. E.g. an example of what doesn't work:
type Row<T> = {
value: T;
};
createAssertType<Row<number>>();
// Throws the error:
NestedError: Failed to transform node at: ....ts:96:3
at transformNodeAndChildren (../../node_modules/typescript-is/src/transform-inline/transformer.ts:37:15)
at ../../node_modules/typescript-is/src/transform-inline/transformer.ts:39:62
at visitNode (../../node_modules/typescript/lib/typescript.js:74115:23)
at Object.visitEachChild (../../node_modules/typescript/lib/typescript.js:74398:59)
at transformNodeAndChildren (../../node_modules/typescript-is/src/transform-inline/transformer.ts:39:15)
at ../../node_modules/typescript-is/src/transform-inline/transformer.ts:39:62
at visitNodes (../../node_modules/typescript/lib/typescript.js:74166:48)
at visitLexicalEnvironment (../../node_modules/typescript/lib/typescript.js:74199:22)
at Object.visitEachChild (../../node_modules/typescript/lib/typescript.js:74514:54)
at transformNodeAndChildren (../../node_modules/typescript-is/src/transform-inline/transformer.ts:39:15)
Caused By: Error: Unbound type parameter, missing type node.
at visitTypeParameter (../../node_modules/typescript-is/src/transform-inline/visitor-type-check.ts:375:15)
at visitType (../../node_modules/typescript-is/src/transform-inline/visitor-type-check.ts:627:16)
at ../../node_modules/typescript-is/src/transform-inline/visitor-type-check.ts:254:27
at Array.map (<anonymous>)
at ../../node_modules/typescript-is/src/transform-inline/visitor-type-check.ts:248:34
at Object.setFunctionIfNotExists (../../node_modules/typescript-is/src/transform-inline/visitor-utils.ts:40:46)
at visitRegularObjectType (../../node_modules/typescript-is/src/transform-inline/visitor-type-check.ts:209:25)
at visitObjectType (../../node_modules/typescript-is/src/transform-inline/visitor-type-check.ts:400:16)
at Object.visitType (../../node_modules/typescript-is/src/transform-inline/visitor-type-check.ts:630:16)
at createArrowFunction (../../node_modules/typescript-is/src/transform-inline/transform-node.ts:16:15)
And here is a WORKING example:
type Rec<K extends keyof any, T> = {
[P in K]: T;
};
createAssertType<Rec<string, number>>();
hi @dko-slapdash
type Row<T> = {
value: T;
};
createAssertType<Row<number>>();
Should work perfectly fine. This is most likely a bug. I will investigate it.
Hi @dko-slapdash
I've released v0.17.0 which hopefully fixes the issue for you: https://github.com/woutervh-/typescript-is/releases/tag/v0.17.0