TypeScript 中检查变量的类型
使用 typeof
运算符检查 TypeScript 中变量的类型,例如 if (typeof myVar === 'string') {}
。 typeof
运算符返回一个字符串,该字符串指示值的类型,并且可以用作 TypeScript 中的类型保护。
const myVar: string | number = 'hello world';
console.log(typeof myVar); // 👉️ "string"
if (typeof myVar === 'string') {
console.log(myVar.toUpperCase()); // 👉️ "HELLO WORLD"
}
// ✅ Use instanceof for classes
class Person {}
const person = new Person();
console.log(person instanceof Person); // 👉️ true
const err = new Error('Something went wrong');
console.log(err instanceof Error); // 👉️ true
// ✅ Use Array.isArray to check if array
console.log(Array.isArray([1, 2, 3])); // 👉️ true
我们使用 typeof 运算符来检查 TypeScript 中变量的类型。
运算符返回一个字符串,指示值的类型,可以用作类型保护。
const myVar: string | number = Math.random() > 0.5 ? 'Hello' : 1000;
// 👉️ myVar has type string or number here
if (typeof myVar === 'string') {
// 👇️ myVar has type string here
console.log(myVar.toUpperCase());
} else {
// 👇️ myVar has type number here
console.log(myVar.toFixed(2));
}
myVar
变量使用联合类型进行类型化,并且可以具有字符串或数字类型。
我们不能直接访问变量上的字符串内置方法,因为它可能是一个数字。
在我们的 if 条件中,我们检查 myVar 的类型是否为字符串,因此 TypeScript 知道该变量在 if 块中存储了一个字符串。
变量可能存储的唯一其他可能类型是数字,因此变量在 else 块中被键入为数字。
以下是使用 typeof
运算符的一些示例。
console.log(typeof 'hello'); // 👉️ "string"
console.log(typeof 100); // 👉️ "number"
console.log(typeof true); // 👉️ "boolean"
console.log(typeof [1, 2, 3]); // 👉️ "object"
console.log(typeof {}); // 👉️ "object"
console.log(typeof function example() {}); // 👉️ "function"
console.log(typeof NaN); // 👉️ "number"
console.log(typeof undefined); // 👉️ "undefined"
console.log(typeof null); // 👉️ "object"
console.log(typeof class A {}); // 👉️ "function"
请注意
,将 typeof 运算符与数组一起使用会返回对象。
要检查变量是否存储在数组中,请使用 Array.isArray()
方法。
const arr: string[] = ['a', 'b', 'c'];
console.log(Array.isArray(arr)); // 👉️ true
Array.isArray
方法返回一个布尔结果 - 如果传入的值是一个数组,则返回 true,否则返回 false。
NaN(不是数字)的类型是数字。 如果我们需要检查特定值是否为 NaN,请使用 Number.isNaN
方法。
const example = Number('hello');
console.log(example); // 👉️ NaN
if (Number.isNaN(example)) {
console.log('Passed in value is NaN');
}
如果传入的值的类型为数字并且为 NaN,则 Number.isNaN
方法将返回 true。
当我们执行 typeof null
时,typeof 运算符返回“object”。
console.log(typeof null); // 👉️ "object"
如果要检查变量是否存储空值,请不要使用 typeof
运算符,而是直接检查。
const example = null;
if (example === null) {
console.log('Variable stores a null value');
}
注意
,typeof
运算符始终返回一个字符串。 一个非常常见的错误是执行以下操作。
const myVar = undefined;
if (typeof myVar === undefined) {
console.log('myVar is undefined');
} else {
console.log('👉️ This block runs');
}
运行示例中的 else 块是因为我们正在检查 myVar 的类型是否等于未定义的值。 这计算结果为 false,因为 typeof myVar 返回一个“未定义”字符串,而不是未定义的值。
typeof
运算符为类返回“函数”。 这是因为 JavaScript(和 TypeScript)中的类只是函数的语法糖。
如果我们需要检查变量是否存储特定类的实例,请使用 instanceof
运算符。
class Person {}
const person = new Person();
if (person instanceof Person) {
console.log('value is an instance of Person');
}
instanceof
运算符返回一个布尔值,指示构造函数的原型属性是否出现在对象的原型链中。
person 对象是使用 Person 类创建的,因此它是该类的一个实例。
instanceof
运算符在 TypeScript 中非常有用,因为它可以用作类型保护。
class Person {
walk() {
console.log('person is walking');
}
}
class Animal {
run() {
console.log('animal is running');
}
}
function example(x: Person | Animal) {
// 👉️ x is type Person or Animal here
if (x instanceof Person) {
// 👇️ x is type Person here
x.walk();
} else {
// 👇️ x is type Animal here
x.run();
}
}
该函数采用 Person
或 Animal
类型的参数,因此在访问特定于类的方法之前,我们必须检查传递给函数的类的实例。
相关文章
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 Angular 中使用 TypeScript 的 getElementById 替换
发布时间:2023/04/14 浏览次数:153 分类:Angular
-
本教程指南提供了有关使用 TypeScript 在 Angular 中替换 document.getElementById 的简要说明。这也提供了在 Angular 中 getElementById 的最佳方法。
在 TypeScript 中使用 try..catch..finally 处理异常
发布时间:2023/03/19 浏览次数:181 分类:TypeScript
-
本文详细介绍了如何在 TypeScript 中使用 try..catch..finally 进行异常处理,并附有示例。
在 TypeScript 中使用 declare 关键字
发布时间:2023/03/19 浏览次数:97 分类:TypeScript
-
本教程指南通过特定的实现和编码示例深入了解了 TypeScript 中 declare 关键字的用途。
在 TypeScript 中 get 和 set
发布时间:2023/03/19 浏览次数:172 分类:TypeScript
-
本篇文章演示了类的 get 和 set 属性以及如何在 TypeScript 中实现它。
在 TypeScript 中格式化日期和时间
发布时间:2023/03/19 浏览次数:161 分类:TypeScript
-
本教程介绍内置对象 Date() 并讨论在 Typescript 中获取、设置和格式化日期和时间的各种方法。
在 TypeScript 中返回一个 Promise
发布时间:2023/03/19 浏览次数:182 分类:TypeScript
-
本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。
在 TypeScript 中定义函数回调的类型
发布时间:2023/03/19 浏览次数:221 分类:TypeScript
-
本教程说明了在 TypeScript 中为函数回调定义类型的解决方案。为了程序员的方便和方便,实施了不同的编码实践指南。
在 TypeScript 中把 JSON 对象转换为一个类
发布时间:2023/03/19 浏览次数:110 分类:TypeScript
-
本教程演示了如何将 JSON 对象转换为 TypeScript 中的类。