@@ -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