请解释 TypeScript 中的 is 关键字的作用和用法。如何使用类型谓词 (Type Predicates) 缩小类型范围?

推荐答案

-- -------------------- ---- -------
-------- --------------- ----- ----- -- ------ -
  ------ ------ ----- --- ---------
-

-------- -------------- ------ - ------- -
  -- ----------------- -
    -- ---------------- -- ------- - -------- --
    ---------------------------------
  - ---- -
    -- ---------------- -- ------- - -------- --
    ------------------------------
  -
-

本题详细解读

is 关键字的作用

is 关键字在 TypeScript 中用于定义类型谓词(Type Predicates)。类型谓词是一种特殊的函数返回值类型注解,它用于在运行时检查某个值是否属于特定类型,并在编译时帮助 TypeScript 缩小类型范围。

类型谓词的语法

类型谓词的语法如下:

其中:

  • value 是要检查的值。
  • TypeName 是你希望 value 属于的类型。
  • value is TypeName 是类型谓词,表示如果函数返回 true,则 valueTypeName 类型。

如何使用类型谓词缩小类型范围

类型谓词的主要作用是帮助 TypeScript 在条件语句中缩小变量的类型范围。通过使用类型谓词,你可以在特定的代码块中让 TypeScript 知道某个变量的确切类型。

例如:

-- -------------------- ---- -------
-------- --------------- ----- ----- -- ------ -
  ------ ------ ----- --- ---------
-

-------- -------------- ------ - ------- -
  -- ----------------- -
    -- ---------------- -- ------- - -------- --
    ---------------------------------
  - ---- -
    -- ---------------- -- ------- - -------- --
    ------------------------------
  -
-

在这个例子中:

  • isString 函数是一个类型谓词,它检查 value 是否是 string 类型。
  • example 函数中,if (isString(value)) 语句告诉 TypeScript,如果 isString(value) 返回 true,则 valuestring 类型,因此在 if 块中可以使用 string 类型的方法(如 toUpperCase)。
  • else 块中,TypeScript 知道 value 不是 string 类型,因此它必须是 number 类型,可以使用 number 类型的方法(如 toFixed)。
纠错
反馈