【发布时间】:2018-07-26 21:42:34
【问题描述】:
我正在使用 TypeScript 中的对象,这些对象可能包含可以获取数据或数据本身的惰性链接。这就是为什么这些属性得到一个联合类型 T |字符串。
现在我想编写一个类型安全的解析函数来解析返回嵌套类型的嵌套属性。
type TypeOrString<T> = T | string;
interface A {
propA: TypeOrString<B>;
}
interface B {
propB: TypeOrString<any[]>;
}
function resolve<T, K1 extends keyof T, K2 extends keyof T[K1]>
(data: T | string, p1: K1, p2: K2): T[K1][K2] {
return null;
}
let a:A;
let b:TypeOrString<any[]> = resolve(a, "propA", "propB");
//Error TS2345: Argument of type '"propB"' is not assignable
//to parameter of type '"toString" | "valueOf"'.
但是编译器给了我一个错误,TS2345:'"propB"' 类型的参数不可分配给'"toString" 类型的参数 | “的价值”'。是否有机会从接口 A 的实例推断 propB 的类型?
【问题讨论】:
标签: typescript