Skip to content

Commit d7d99ee

Browse files
committed
稳定支持 import type 上的 resolution-mode
1 parent ec6dacd commit d7d99ee

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

zh/release-notes/typescript-5.3.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,52 @@ const obj = await import('./something.json', {
3939

4040
感谢 Oleksandr Tarasiuk 实现了这个功能!
4141
也感谢 Wenlu Wang 实现了 import assertions!
42+
43+
## 稳定支持 `import type` 上的 `resolution-mode`
44+
45+
TypeScript 4.7 在 `/// <reference types="..." />` 里支持了 `resolution-mode` 属性,
46+
它用来控制一个描述符是使用 `import` 还是 `require` 语义来解析。
47+
48+
```ts
49+
/// <reference types="pkg" resolution-mode="require" />
50+
51+
// or
52+
53+
/// <reference types="pkg" resolution-mode="import" />
54+
```
55+
56+
在 type-only 导入上,导入断言也引入了相应的字段;
57+
然而,它仅在 TypeScript 的夜间版本中得到支持
58+
其原因是在精神上,导入断言并不打算指导模块解析。
59+
因此,这个特性以实验性的方式仅在夜间版本中发布,以获得更多的反馈。
60+
61+
但是,导入属性(Import Attributes)可以指导解析,并且我们也已经看到了有意义的用例,
62+
TypeScript 5.3 在 `import type` 上支持了 `resolution-mode`
63+
64+
```ts
65+
// Resolve `pkg` as if we were importing with a `require()`
66+
import type { TypeFromRequire } from "pkg" with {
67+
"resolution-mode": "require"
68+
};
69+
70+
// Resolve `pkg` as if we were importing with an `import`
71+
import type { TypeFromImport } from "pkg" with {
72+
"resolution-mode": "import"
73+
};
74+
75+
export interface MergedType extends TypeFromRequire, TypeFromImport {}
76+
```
77+
78+
这些导入属性也可以用在 `import()` 类型上。
79+
80+
```ts
81+
export type TypeFromRequire =
82+
import("pkg", { with: { "resolution-mode": "require" } }).TypeFromRequire;
83+
84+
export type TypeFromImport =
85+
import("pkg", { with: { "resolution-mode": "import" } }).TypeFromImport;
86+
87+
export interface MergedType extends TypeFromRequire, TypeFromImport {}
88+
```
89+
90+
更多详情,请参考[PR](https://github.com/microsoft/TypeScript/pull/55725)

0 commit comments

Comments
 (0)