有没有办法覆盖 TypeScript 包导出和使用的类型的值?
所以我的打字文件中有这个:
// index.d.ts
declare module 'my-package' {
namespace DependencyInjection {
type ServiceID = 'myServiceOne' | 'myServiceTwo'; // original type is "any";
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Duplicate identifier 'ServiceID'.ts(2300)
inject.ts(44, 10): 'ServiceID' was also declared here.
Run Code Online (Sandbox Code Playgroud)
我希望能够替换ServiceID使用代码中的类型。能做到吗?我知道接口可以扩展,但我还没有找到更改或更新类型的方法。
语境
我正在编写一个 TypeScript 包,我希望用户在集成该包时能够用自己的类型覆盖一些默认类型,而不是每次使用某些方法时都必须提供泛型。
小智 4
仅当模块可扩展时,模块扩充才有效。类型无法扩展,但接口可以。
declare module 'my-package' {
namespace DependencyInjection {
interface ServiceIDMap {}
type ServiceID = keyof ServiceIDMap
}
}
declare module 'my-package' {
namespace DependencyInjection {
// insert your keys in here.
interface ServiceIDMap {
myServiceOne: unknown
mySevriceTwo: unknown
}
}
}
Run Code Online (Sandbox Code Playgroud)
@types/jest也旨在通过ts-jest扩展Config.InitialOptions.globals结构来做到这一点。
| 归档时间: |
|
| 查看次数: |
4522 次 |
| 最近记录: |