本章解释了代码示例中使用的功能,但这些功能并非 TypeScript 本身的一部分。
本书中显示的代码示例通过单元测试自动测试。操作的预期结果通过以下来自 Node.js 模块 assert
的断言函数进行检查
assert.equal()
通过 ===
测试相等性assert.deepEqual()
通过深度比较嵌套对象(包括数组)来测试相等性。assert.throws()
会报错。以下是使用这些断言的示例
import {strict as assert} from 'assert';
.equal(3 + ' apples', '3 apples');
assert
.deepEqual(
assert...['a', 'b'], ...['c', 'd']],
['a', 'b', 'c', 'd']);
[
.throws(
assert=> eval('null.myProperty'),
() ; TypeError)
第一行中的导入语句使用了 严格断言模式(使用 ===
,而不是 ==
)。在代码示例中通常会省略它。
您还将看到静态类型断言。
%inferred-type
只是普通 TypeScript 中的注释,用于描述 TypeScript 为下一行推断的类型
// %inferred-type: number
= 123; let num
@ts-expect-error
会抑制 TypeScript 中的静态错误。在本书中,始终会提及被抑制的错误。这在普通的 TypeScript 中既不是必需的,也不会产生任何影响。
.throws(
assert// @ts-expect-error: Object is possibly 'null'. (2531)
=> null.myProperty,
() ; TypeError)
请注意,我们之前需要 eval()
才能避免 TypeScript 发出警告。