泛型条件语句的求值延迟,所以我尝试使用一个交集来提示编译器我想要的类型:
type ArgType<T> = T & (T extends MyType ? ({
myArg?: MyInterface<T>
})
: never)
然而,当我试图调用一个函数来访问上面类型的参数时,我得到了这个错误:
'T'可以用任意类型示例化,该类型可能与'{ myArg:this; }'
完整代码:
type MyType = 'foo';
interface MyInterface<T extends MyType> {
myField: T;
}
type ArgType<T> = T & (T extends MyType ? ({
myArg?: MyInterface<T>
})
: never)
function myFunc<T>(arg: ArgType<T>) {
return arg;
}
class MyClass<T extends MyType> implements MyInterface<T> {
constructor(readonly myField: T) {}
invoke() {
const result = myFunc({
myArg: this
});
}
}
Playground链接
1条答案
按热度按时间r3i60tvu1#