TypeScript强制执行文件夹中的所有文件导出一个扩展另一个类

时间:2018-03-26 21:24:12

标签: typescript typescript-typings tsc

如果我有一个文件夹:

jobs/
  a.ts
  b.ts
  c.ts

有没有办法使用TypeScript,以便jobs文件夹中的所有文件都导出相同的界面?

我希望a.ts,b.ts,c.ts都可以导出相同的界面。

1 个答案:

答案 0 :(得分:1)

不确定您要找的是什么,但您可以这样做:

jobs目录中:

a.ts

 export interface MyInterface {
   color: string;
 }

b.ts

 export interface MyInterface {
   name: string;
 }

c.ts

  export interface MyInterface {
    age: number;
  }

然后,是其他文件,你可以这样:

 import { MyInterface } from './jobs/a';

 export class SomeClass implements MyInterface {
     color: string;
 }

在另一个文件中,您可以拥有:

 import { MyInterface } from './jobs/b';

 export class SomeClass implements MyInterface {
     name: string;
 }

在另一个不同的文件中,您可以拥有:

 import { MyInterface } from './jobs/c';

 export class SomeClass implements MyInterface {
     age: number;
 }

除非有一个非常好的,防弹的理由,否则我认为这根本不是一个好主意。它很容易混淆并导入/修改错误的东西,并导致自己不必要的麻烦。

从技术上讲,所有三个接口都来自a,b,& c可以有相同的参数(就像他们都有name: string)...它基本上是一样的......也许你以后会对更改进行对冲?您可以扩展该FYI的接口。

你能进一步解释你想要完成的事情吗?

  • 编辑*

你不能在同一个档案中拥有这一切:

import { MyInterface } from './jobs/a';
import { MyInterface } from './jobs/b';
import { MyInterface } from './jobs/c';

 export class SomeClass implements MyInterface {
     age: number;
 }

 export class SomeOtherClass implements MyInterface {
     color: string;
 }

 export class SomeOtherOtherClass implements MyInterface {
     name: string;
 }