最适合网络开发者的网站
TypeScript。初学者课程

尿素 西斯

TypeScript 特殊类型


TypeScript 具有特殊类型,可能不指代任何特定类型的数据。


类型:任意

any 是一种禁用类型检查并实际上允许使用所有类型的类型。

下面的例子不使用 any 并会引发错误:

示例无 any

让 u = true;
u = "string"; // 错误:类型“string”不能分配给类型“boolean”。
Math.round(u); // 错误:'boolean' 类型的参数不能分配给'number' 类型的参数。
亲自尝试 »

环境 any 特殊类型any 禁用类型检查:

例如 any

让 v:任何 = true;
v = "string"; // 没有错误,因为它可以是“任何”类型
Math.round(v); // 没有错误,因为它可以是“任何”类型
亲自尝试 »

any 可以成为一种有用的方法来避免错误,因为它会禁用类型检查,但 TypeScript 将无法提供类型安全,并且依赖类型数据的工具(例如自动完成)将不起作用。请记住,应该不惜一切代价避免它...


类型:未知

unknown 是一种类似但更安全的替代方案any.

TypeScript 将阻止 unknown 类型被使用,如下例所示:

设 w:未知 = 1;
w = "string"; // 没有错误
w = {
运行ANonExistentMethod:()=> {
console.log("我思故我在");
  }
} 作为 { runANonExistentMethod: () => void}
// 当我们不知道类型时,如何避免下面注释掉的代码的错误?
// w.runANonExistentMethod(); // 错误:对象类型为“未知”。
如果(typeof w ==='object'&& w!== null){
(w 作为 { runANonExistentMethod:Function })。runANonExistentMethod();
}
// 尽管我们必须多次转换,但我们可以在 if 中进行检查以确保我们的类型并进行更安全的转换
亲自尝试 »

将上面的例子与前面的例子进行比较, any.

unknown 最适合在您不知道输入的数据类型时使用。若要稍后添加类型,您需要对其进行强制转换。

当我们使用“as”关键字来表示属性或变量属于转换类型时,就是转换类型。


类型:从不

never 无论何时定义它,都会有效地引发错误。

let x: never = true; // 错误:类型“boolean”不能分配给类型“never”。
亲自尝试 »

never 很少使用,尤其是单独使用时;其主要用于高级泛型。


类型:undefined & null

undefinednull 是引用 JavaScript 基本类型undefinednull 分别。

让 y:未定义 = 未定义;
让 z: null = null;
亲自尝试 »

这些类型没什么用,除非 strictNullChecks 已启用tsconfig.json 文件。


TypeScript 练习

通过练习测试自己

锻炼:

创建一个空的“myVar”变量,并禁用类型检查:

let myVar: ;
        



评论