【发布时间】:2019-03-13 23:17:42
【问题描述】:
我有类似的界面
interface A {
a: string;
}
interface B {
b: string;
}
export interface C {
rnd: A;
rnd2: B;
}
并且我想要像update<T>(setting: T) 这样的函数,它在对象中找到T 类型的属性,它实现interface C 并使用setting 更新找到的属性(如果已经存在)值。
有没有办法做到这一点?我试过迭代和typeof,但编译器返回This condition will always return 'false' since types 'T' and 'string' has no overlap
【问题讨论】:
-
如果没有真正深入的知识很难证明是否定的,我有 JavaScript 但没有 TypeScript,所以:我非常非常怀疑这些信息在运行时是否可用。 TypeScript 的静态类型检查是在编译时完成的,它会发出 JavaScript。据我所知,它不会发出您需要执行此操作的更多元数据。
-
现在,如果它们是类而不是接口,您可以使用
instanceof。但是使用instanceof通常表明您需要重新考虑自己在做什么。 :-)
标签: typescript