推荐答案
typeof 类型保护
typeof
类型保护用于在 TypeScript 中判断变量的基本类型。它通常用于判断 string
、number
、boolean
、symbol
、undefined
、object
和 function
等基本类型。
function printValue(value: string | number) { if (typeof value === "string") { console.log("String value: " + value); } else { console.log("Number value: " + value); } }
instanceof 类型保护
instanceof
类型保护用于判断一个对象是否是某个类的实例。它通常用于判断自定义类的实例。
-- -------------------- ---- ------- ----- ------ - ----- ------- ----------------- ------- - --------- - ----- - - ----- --- ------- ------ - ------ - --------------------- - - -------- ------------------- ------- - -- ------- ---------- ---- - -------------- - ---- - ------------------- ----- - - ------------- - -
in 类型保护
in
类型保护用于判断一个对象是否包含某个属性。它通常用于判断对象是否具有某个特定的属性。
-- -------------------- ---- ------- --------- ---- - ------ ----- - --------- ---- - ------- ----- - -------- --------- ---- - ----- - -- ------ -- ---- - ---------- - ---- - ----------- - -
自定义类型保护
自定义类型保护是通过定义一个返回类型谓词(parameterName is Type
)的函数来实现的。它允许你编写更复杂的类型判断逻辑。
-- -------------------- ---- ------- -------- ----------- ---- - ------ --- -- ---- - ------ ---- -- ---------- --- ---------- - -------- --------- ---- - ----- - -- ------------- - ----------- - ---- - ---------- - -
本题详细解读
typeof 类型保护
typeof
类型保护是 TypeScript 中最简单的类型保护之一。它通过检查变量的类型来缩小变量的类型范围。typeof
只能用于基本类型,不能用于判断对象或自定义类型。
instanceof 类型保护
instanceof
类型保护用于判断一个对象是否是某个类的实例。它通过检查对象的原型链来判断对象是否属于某个类。instanceof
只能用于判断类的实例,不能用于判断接口或基本类型。
in 类型保护
in
类型保护通过检查对象是否包含某个属性来判断对象的类型。它适用于判断对象是否具有某个特定的属性,通常用于联合类型的场景。
自定义类型保护
自定义类型保护允许你编写更复杂的类型判断逻辑。通过定义一个返回类型谓词的函数,你可以在函数内部实现任意的类型判断逻辑,并在函数外部使用该函数来缩小变量的类型范围。自定义类型保护非常灵活,适用于各种复杂的类型判断场景。