推荐答案
-- -------------------- ---- ------- -------- --------------- ----- ----- -- ------ - ------ ------ ----- --- --------- - -------- -------------- ------ - ------- - -- ----------------- - -- ---------------- -- ------- - -------- -- --------------------------------- - ---- - -- ---------------- -- ------- - -------- -- ------------------------------ - -
本题详细解读
is
关键字的作用
is
关键字在 TypeScript 中用于定义类型谓词(Type Predicates)。类型谓词是一种特殊的函数返回值类型注解,它用于在运行时检查某个值是否属于特定类型,并在编译时帮助 TypeScript 缩小类型范围。
类型谓词的语法
类型谓词的语法如下:
function isTypeName(value: any): value is TypeName { // 返回一个布尔值,表示 `value` 是否是 `TypeName` 类型 }
其中:
value
是要检查的值。TypeName
是你希望value
属于的类型。value is TypeName
是类型谓词,表示如果函数返回true
,则value
是TypeName
类型。
如何使用类型谓词缩小类型范围
类型谓词的主要作用是帮助 TypeScript 在条件语句中缩小变量的类型范围。通过使用类型谓词,你可以在特定的代码块中让 TypeScript 知道某个变量的确切类型。
例如:
-- -------------------- ---- ------- -------- --------------- ----- ----- -- ------ - ------ ------ ----- --- --------- - -------- -------------- ------ - ------- - -- ----------------- - -- ---------------- -- ------- - -------- -- --------------------------------- - ---- - -- ---------------- -- ------- - -------- -- ------------------------------ - -
在这个例子中:
isString
函数是一个类型谓词,它检查value
是否是string
类型。- 在
example
函数中,if (isString(value))
语句告诉 TypeScript,如果isString(value)
返回true
,则value
是string
类型,因此在if
块中可以使用string
类型的方法(如toUpperCase
)。 - 在
else
块中,TypeScript 知道value
不是string
类型,因此它必须是number
类型,可以使用number
类型的方法(如toFixed
)。