我在一个外部库中有一个类型,它看起来像这样:
export declare type CreateProductInput = {
title: string;
}
我希望此类型具有另一个属性,因此尝试在我自己的index.d.ts
文件中添加该属性:
我尝试了以下方法:
export declare type CreateProductInput = {
subtitle: string;
}
但这并不奏效。我还尝试了以下方法:
declare module '@path/to/library/type/file' {
declare interface CreateProductInput {
subtitle: string;
}
}
但是,这样做会完全覆盖类型,我将无法再访问title
字段。
可以像这样合并类型吗?基本上,我想通过添加另一个属性来修改原始类型。
2条答案
按热度按时间gojuced71#
如果你真的想坚持使用
type
,那么即使在导入的类型上也应该能够做到这一点:另一种选择是使用接口:
在操场上检查这两个。你想用你试图这样做的方式覆盖类型是不可能的,也是糟心的形式。创建一个新的类型/接口,有你需要的。
p4rjhz4m2#
不幸的是,类型别名不能被 * merged *。这是与TypeScript中的接口声明的区别之一。
但是你可以创建一个新的接口来 * 扩展 * 一个类型,尽管这看起来并不是你想要的:
Playground链接
有关更多详细信息,请参见Interfaces vs Types in TypeScript