现在在一个类中,我声明了一个类型为 CustomType 的数组,如下所示
class Example {
public exampleArray: CustomType[];
public clearArray() {
this.exampleArray = [];
}
}
如您所见,clearArray 分配了一个空数组的 UNDEFINED 类型,这似乎丢失了类型信息。
我如何清除数组但保留其声明的类型?
原文由 Vincent-cm 发布,翻译遵循 CC BY-SA 4.0 许可协议
类型信息由字段上的类型注释确定 (
exampleArray: CustomType[]
)。在运行时,Javascript 数组无论如何都是无类型的。编译器将允许将空数组 ([]
) 分配给任何东西,因为这被认为是安全的,因为里面没有对象,它可以是CustomType
的数组。然后,字段类型将阻止您推送到任何其他类型的数组对象:笔记
如果这是一个没有类型注释的变量,该变量将被推断为
any[]
,这可能会导致问题(在分配数组文字时或将推送到大批):在这种情况下,添加类型注释仍然是最好的方法。如果稍后有人将项目添加到数组中,类型断言(如其他答案中所建议的)可能会导致未捕获的错误: