【发布时间】:2018-12-07 00:41:22
【问题描述】:
我正在尝试实现一个类似的方法,该方法采用一个关键参数,即string 或可索引类型接口IValidationContextIndex 的实例。实现如下所示:
/**
* Gets all ValidationContext container values.
* @returns An array of ValidationContext instances contained in the cache.
*/
public static getValidationContextValues(key: IValidationContextIndex | string ): Array<ValidationContext> {
if (key instanceof IValidationContextIndex ) [
return Object.values(<any> key);
]
else {
const vci = ValidationContainer.cache[<string>key];
return Object.values(<any> vci);
}
}
Typescript 为 if 块提供以下错误:
[ts] 'IValidationContextIndex' 仅指一种类型,但在这里用作值。
关于如何解决这个问题的任何想法?
对于大多数界面,我认为可以添加type 属性(type: 'IValidationContextsIndex';
),但在这种情况下不起作用,因为接口是可索引类型的接口 ....
【问题讨论】:
-
你可以使用任何类型
-
如果我执行
key: any并执行 instanceof 检查,我仍然会收到相同的错误... -
请记住,一旦您转译为 javascript,接口和类型就会消失。这些用于您的代码检查和 linting。不是为了你的最终结果。
-
是的,我理解那部分 - 基本上界面已经消失了,所以 Typescript 就像“伙计,我没有......”
-
也许这会有所帮助:stackoverflow.com/a/40718205/1497533
标签: javascript typescript