TypeScript 是一种强类型的编程语言,它提供了一些方法和技巧来对比不同类型的值。本文将介绍这些方法和技巧,并提供一些示例代码。
1. typeof
typeof 是一种运算符,用于获得一个值的类型。它返回一个表示该值类型的字符串。以下是一些示例:
typeof 42 // "number" typeof "hello" // "string" typeof true // "boolean" typeof undefined // "undefined" typeof null // "object" typeof [] // "object" typeof {} // "object"
需要注意的是,typeof null 返回的是 "object",这是一个历史遗留问题。如果要判断一个值是否为 null,应该使用 === 运算符。
2. instanceof
instanceof 是一种运算符,用于判断一个对象是否是某个类的实例。它返回一个布尔值。以下是一些示例:
class Person {} const person = new Person() person instanceof Person // true class Animal {} const animal = {} animal instanceof Animal // false
需要注意的是,instanceof 只能用于判断对象是否是某个类的实例,不能用于原始类型的值。
3. Object.prototype.toString
Object.prototype.toString 是一个方法,用于获得一个值的类型。它返回一个表示该值类型的字符串。以下是一些示例:
Object.prototype.toString.call(42) // "[object Number]" Object.prototype.toString.call("hello") // "[object String]" Object.prototype.toString.call(true) // "[object Boolean]" Object.prototype.toString.call(undefined) // "[object Undefined]" Object.prototype.toString.call(null) // "[object Null]" Object.prototype.toString.call([]) // "[object Array]" Object.prototype.toString.call({}) // "[object Object]"
需要注意的是,Object.prototype.toString.call([]) 返回的是 "[object Array]",而不是 "[object Object]",这是因为数组是一种特殊的对象类型。
4. 类型保护
类型保护是一种技巧,用于在代码中对不同类型的值进行判断,并在不同的分支中使用不同的类型。以下是一些示例:
-- -------------------- ---- ------- -------- --------------- ----- ----- -- ------ - ------ ------ ----- --- -------- - -------- --------------- ----- ----- -- ------ - ------ ------ ----- --- -------- - -------- -------------- ------ - ------- - -- ----------------- - -- ------------ ---- ---------- --- ------ -------------------------------- - ---- -- ----------------- - -- ------------ ---- ---------- --- ------ ----------------------------- - ---- - -- ------------ ---- ---------- --- ----- -------------------- ------ - -
需要注意的是,类型保护的函数必须返回一个布尔值,并且使用 value is type 的形式来指定类型。
结论
在 TypeScript 中,对比不同类型的值是一项非常重要的任务。本文介绍了一些方法和技巧,如 typeof、instanceof、Object.prototype.toString 和类型保护。这些方法和技巧可以帮助我们编写更加健壮和可靠的代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/675ed1a9e49b4d07161d01a2