Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

TypeScript 特殊类型


TypeScript 有一些特殊的类型,它们可能不引用任何特定类型的数据。


类型:any

any 是一种禁用类型检查的类型,并且有效地允许使用所有类型。

下面的示例未使用 any 并且会抛出错误

不使用 any 的示例

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

any 设置为特殊类型 any 会禁用类型检查

使用 any 的示例

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

any 可以是一种绕过错误的有用方法,因为它禁用了类型检查,但 TypeScript 将无法提供类型安全性,并且依赖于类型数据的工具(例如自动完成)将无法工作。请记住,应“任何”代价避免它……


类型:unknown

unknownany 的一个类似但更安全的替代方案。

TypeScript 将阻止使用 unknown 类型,如下面的示例所示

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

将上面的示例与前面的 any 示例进行比较。

unknown 最适合在您不知道正在键入的数据类型时使用。要稍后添加类型,您需要对其进行类型断言。

类型断言是指我们使用“as”关键字来说明属性或变量是断言类型的。


w3schools CERTIFIED . 2022

获得认证!

完成 TypeScript 模块,进行练习,参加考试并成为 w3schools 认证专家!!

$45 报名

类型:never

never 在定义时有效地抛出错误。

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

never 很少使用,尤其是在单独使用时,它的主要用途是在高级泛型中。


类型:undefined & null

undefinednull 是分别引用 JavaScript 原语 undefinednull 的类型。

let y: undefined = undefined;
let z: null = null;
亲自试一试 »

除非在 tsconfig.json 文件中启用了 strictNullChecks,否则这些类型没有太大用处。


TypeScript 练习

通过练习测试自己

练习

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

let myVar: ;
        

开始练习


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.