我有一个包含以下代码的d.ts
文件,它在“some-js-library”模块中声明了两个接口-Foo
和Bar
:
declare module "some-js-library" {
interface Foo {
foo: boolean;
}
interface Bar {
barFoo: Foo;
}
}
在我的app.ts文件中,我想将Bar接口中barFoo属性的返回类型从Foo
更改为boolean
。由于我无法直接修改d.ts
文件,因此我在app.ts
中再次声明模块。
import { Bar } from "some-js-library";
declare module "some-js-library" {
interface Bar {
barFoo: boolean; //<-- Subsequent property declarations must have the same type. Property 'barFoo' must be of type 'Foo', but here has type 'boolean'.ts(2717)
}
}
const bar: Bar = { barFoo: true }; // <-- error: Type 'boolean' is not assignable to type 'Foo'.ts(2322)
但是,TypeScript抛出了一个错误:
Subsequent property declarations must have the same type. Property 'barFoo' must be of type 'Foo', but here has type 'boolean'.
有没有一种方法可以修改barFoo的返回类型而不改变它的名称?
1条答案
按热度按时间qybjjes11#
如果没有在类型的定义中显式允许,则无法在TypeScript中更改属性类型。
重新定义
Bar
接口以允许这两种类型的最简单方法是:请参阅Overriding interface property type defined in Typescript d.ts file以了解使用实用程序类型的潜在解决方案。