【发布时间】:2021-09-14 10:45:34
【问题描述】:
几年前我一直在使用 Typescript,但我仍然发现它的魔力。
我想知道为什么一个类成员可以在运行时更改类型,尽管它已在代码中定义为另一个?
我有一个小例子:
class TestClass {
myArray: Array<number>
constructor(map: any) {
this.myArray = map.TEST
}
}
const map1 = { TEST: "[]" }
const test1 = new TestClass(map1)
console.log(typeof test1.myArray)
const map2 = { TEST: [] }
const test2 = new TestClass(map2)
console.log(typeof test2.myArray)
然后输出:
[LOG]: "string"
[LOG]: "object"
我了解由于构造函数参数中的any,编译器不会防止map 的错误类型或未定义值。
但我不明白为什么typeof 类成员取决于我们分配的值的类型。为什么不尝试进行强制转换以匹配声明的类成员类型?
以及随后的问题:如何确定编码时不会发生这种情况?鉴于我们并不确切知道地图对象成员的类型。
谢谢
【问题讨论】:
标签: typescript