首页 > 编程笔记 > JavaScript笔记 阅读:14

TypeScript typeof的用法(附带实例)

JavaScript 中可以通过 typeof 获取一个表达式的类型名称;在 TypeScript 中,可以通过 typeof 获取一个表达式的类型,并且 typeof 只能用于类型约束。

请读者思考下面代码的运行结果:
const person = {
    name: 'tom',
    age: 12
};

function fn(x: number): string {
    return x + 'aba';
}

// JavaScript 的 typeof
console.log(typeof person);        // 'object'
console.log(typeof fn);            // 'function'
console.log(typeof person.name);   // 'string'
上面代码打印的是类型名称,即代码中的 typeof 是 JavaScript 中的 typeof,而不是 TypeScript 中的 typeof。

TypeScript 中的 typeof,可以获取变量的类型、函数的类型或对象属性的类型,并用于类型约束,代码如下:
// 要求 a 的类型与 person 的类型一致
let a: typeof person = {
    name: 'jack',
    age: 23
};
// 要求 b 的类型与 fn 的类型一致
let b: typeof fn = (val: number): string => {
    return val.toString();
};
// 要求 b 的类型与 person 对象的 name 属性的类型一致
let c: typeof person.name = 'abc';
// c = 123; // error

在 TypeScript 中,也可以为使用 typeof 获取的类型定义类型别名,并通过类型别名来进行类型约束,代码如下:
type Person = typeof person;

let d: Person = {
    name: 'bob',
    age: 25,
};

相关文章