alias: { type: Array, required: true },
method: { type: Function, required: true },
symbol: { type: Symbol, required: true },
+ extract: { type: Number, required: true },
+ exclude: { type: [Number, Boolean], required: true },
objectOrFn: { type: [Function, Object], required: true },
union: { type: [String, Number], required: true },
literalUnion: { type: String, required: true },
alias: Alias
method(): void
symbol: symbol
+ extract: Extract<1 | 2 | boolean, 2>
+ exclude: Exclude<1 | 2 | boolean, 2>
objectOrFn: {
(): void
foo: string
expect(content).toMatch(
`objectOrFn: { type: [Function, Object], required: true },`
)
+ expect(content).toMatch(`extract: { type: Number, required: true }`)
+ expect(content).toMatch(
+ `exclude: { type: [Number, Boolean], required: true }`
+ )
expect(content).toMatch(
`union: { type: [String, Number], required: true }`
)
method: BindingTypes.PROPS,
symbol: BindingTypes.PROPS,
objectOrFn: BindingTypes.PROPS,
+ extract: BindingTypes.PROPS,
+ exclude: BindingTypes.PROPS,
union: BindingTypes.PROPS,
literalUnion: BindingTypes.PROPS,
literalUnionNumber: BindingTypes.PROPS,
case 'Readonly':
case 'Pick':
case 'Omit':
- case 'Exclude':
- case 'Extract':
case 'Required':
case 'InstanceType':
return ['Object']
+
+ case 'Extract':
+ if (node.typeParameters && node.typeParameters.params[1]) {
+ return inferRuntimeType(
+ node.typeParameters.params[1],
+ declaredTypes
+ )
+ }
+ return ['null']
+ case 'Exclude':
+ if (node.typeParameters && node.typeParameters.params[0]) {
+ return inferRuntimeType(
+ node.typeParameters.params[0],
+ declaredTypes
+ )
+ }
+ return ['null']
}
}
return [`null`]