its*_*ned 2 typescript typescript-typings
我在打字文件中有以下内容:
interface A {
anObject: {
data: string;
};
someOtherData: boolean;
}
Run Code Online (Sandbox Code Playgroud)
现在我想更改接口,以便anObject也包含data2。我希望最终的形式是
interface A {
anObject: {
data: string;
data2: string;
};
someOtherData: boolean;
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这样做,但失败了:
interface A {
anObject: {
data2: string;
}
}
Run Code Online (Sandbox Code Playgroud)
取而代之的是anObject兼具数据和数据2,它只有数据2。无论如何要保留原始密钥吗?
嗯,这样的事情怎么样:
export interface A {
anObject: {
data: string;
};
someOtherData: boolean;
}
Run Code Online (Sandbox Code Playgroud)
import {A as _A} from './orig'
interface A extends _A {
anObject: _A['anObject'] & {
data2: string;
}
}
Run Code Online (Sandbox Code Playgroud)
即:原重命名A的方式进行,以_A在进口。然后扩展它并data2通过将它与查找的属性相交将新属性与原始属性合并。 anObject
或者,如果您不介意A成为type别名而不是interface,则有更简单的方法:
import {A as _A} from './playground'
type A = _A & {
anObject: {
data2: string;
}
}
Run Code Online (Sandbox Code Playgroud)
...在这种情况下,您仍将原件重命名,但只需将其与新零件相交即可。这两种方法都可以为您提供所需的类型:
declare const a: A;
a.anObject.data.charAt(0); // okay
a.anObject.data2.charAt(0); // okay
Run Code Online (Sandbox Code Playgroud)
这有帮助吗?
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |