如何在不直接导入的情况下使用可导入类型内部的未导出子类型?
解决方案
可以实现,不需要直接导入未导出的SubField类型,但要调整类型引用的写法——因为Config.AField.SubField这种点语法无法访问接口属性的嵌套类型,得用TypeScript的索引访问类型来实现。
正确写法示例
方式1:直接在参数中使用索引访问
import { Config } from "external-package"; function myFn(subField: Config['aField']['subField']) {}
方式2:先定义类型别名(可读性更好)
import { Config } from "external-package"; // 从Config中提取嵌套类型 type AField = Config['aField']; type SubField = AField['subField']; function myFn(subField: SubField) {}
原理说明
外部包中未导出的AField和SubField,是作为Config接口的属性类型存在的,而非Config命名空间的子成员,因此不能用.语法直接访问。通过Config['aField']这种索引访问语法,可以从已导出的Config类型中,逐层提取其属性对应的嵌套类型,完全不需要直接引用node_modules里未导出的类型文件。
内容的提问来源于stack exchange,提问作者baitendbidz
相关产品推荐
相关产品推荐

