我正在定义一个自定义类型“Identifier”并创建一个这种类型的变量,但我无法在运行时获取此变量的类型
type Identifier = number;
let myNumber: number;
let myIdentifier: Identifier;
console.log(`myNumber is a ${typeof myNumber}`);
console.log(`myIdentifier is a ${typeof myIdentifier}`);
myNumber = 1234;
myIdentifier = 1234;
console.log(`myNumber is a ${typeof myNumber}`);
console.log(`myIdentifier is a ${typeof myIdentifier}`);
当我运行上面的代码时,我在控制台中得到以下结果
myNumber是未定义的
myIdentifier是未定义的
myNumber是一个数字
myIdentifier是一个数字
我的第一个问题是,当变量没有值时,我得到一个未定义的。
我的第二个问题是,当我为myIdentifier分配一个值时,类型是一个数字,而不是一个标识符。
我这样做的原因是将标识符区分为特殊类型以便稍后进行特殊处理。
答案 0 :(得分:1)
因为typescript被编译成JavaScript而Javascript不是静态类型,所以在运行时,你不会知道变量的类型,只知道变量所持有的值的类型。这就是你看到未定义'的原因。而不是'数字'。此外,没有“标识符”的概念。在javascript中(当你编译成javascript时已经被剥离了),因此,你会看到' number'不是'标识符'
即使在其他编程语言中,当您定义类型别名时,它只会在编译时帮助,而不是运行时。所以你只看到数字,而不是标识符。