gpt4 book ai didi

typescript - 合并不同文件中的 Typescript 接口(interface)和类

转载 作者:行者123 更新时间:2023-12-03 08:58:36 25 4
gpt4 key购买 nike

在 Typescript 中,如果接口(interface)和类具有相同的名称并且位于同一文件中,则可以合并它们:

interface Test {
example(input: 'a number'): number;
example(input: 'a string'): string;
}

class Test {
example(input: string): any {
//return something
}
}

const obj = new Test();
obj.example('a number'); //return type is number
obj.example('a string'); //return type is string
obj.example('something else'); //return type is any

但是似乎没有办法将这些接口(interface)定义拆分为多个文件,例如:

//test.interface.ts
export interface Test {
example(input: 'a number'): number;
example(input: 'a string'): string;
}

//test.class.ts
import "./test.interface.ts";

class Test {
example(input: string): any {
//return something
}
}

const obj = new Test();
obj.example('a number'); //return type is any but should be number
obj.example('a string'); //return type is any but should be string
obj.example('something else'); //return type is any

将类和实际接口(interface)之间的接口(interface)定义拆分为多个文件的正确方法是什么?

最佳答案

此问题的解决方案是重新声明“托管” typescript 模块以扩充其定义:

//test.interface.ts
declare module './test.class.ts' {
interface Test {
example(input: 'a number'): number;
example(input: 'a string'): string;
}
}

//test.class.ts
import "./test.interface.ts";

class Test {
example(input: string): any {
//return something
}
}

const obj = new Test();
obj.example('a number'); //return type is number
obj.example('a string'); //return type is string
obj.example('something else'); //return type is any

关于typescript - 合并不同文件中的 Typescript 接口(interface)和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52968047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com