如何在运行时检索typescript变量的自定义类型

时间:2017-12-06 02:55:15

标签: typescript types typeof

我正在定义一个自定义类型“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分配一个值时,类型是一个数字,而不是一个标识符。

我这样做的原因是将标识符区分为特殊类型以便稍后进行特殊处理。

1 个答案:

答案 0 :(得分:1)

  1. 因为typescript被编译成JavaScript而Javascript不是静态类型,所以在运行时,你不会知道变量的类型,只知道变量所持有的值的类型。这就是你看到未定义'的原因。而不是'数字'。此外,没有“标识符”的概念。在javascript中(当你编译成javascript时已经被剥离了),因此,你会看到' number'不是'标识符'

  2. 即使在其他编程语言中,当您定义类型别名时,它只会在编译时帮助,而不是运行时。所以你只看到数字,而不是标识符。