打字稿导入-每个文件约定一个类

时间:2019-03-12 16:11:19

标签: javascript typescript oop ecmascript-6 es6-class

我刚开始使用Typescript进行前端Web项目。我的目标是使用OOP方法。因此,我的约定是按文件分类(从其包含的类中命名)。

考虑以下示例:

//Car.ts
export default class Car {
    public startEngine (): void {
        console.log('vroom!');        
    }
}

//RaceCar.ts
import Car from './Car';

export default class RaceCar extends Car {
    public startEngine (): void {
        console.log('!!VROOOOOMM!!');        
    }
}

//index.ts 
import RaceCar from './RaceCar';
import Car from './RaceCar';

const car:Car = new RaceCar();

car.startEngine();

此代码可以正常工作,但我有两个问题:

  • 当我使用“每个文件一个类”的约定(默认导出)时,写import Car from './Car';确实很烦人。有一个简短的方法吗?像宏之类的?我已经尝试过import './Car';,但当然不会导入Car符号...
  • 另一个烦人的事情是在index.ts中导入Car和RaceCar。有没有办法只导入已经知道Race类的RaceCar?

换句话说,我正在寻找一种实现C ++ include之类的方法。

1 个答案:

答案 0 :(得分:1)

TypeScript使用+ ES6语法:

根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

  

导入整个模块仅用于副作用,而无需导入   任何东西。这将运行模块的全局代码,但实际上并没有   导入任何值。

     
import '/modules/my-module.js';

您需要导入要使用的符号:

import myDefault from '/modules/my-module.js'; // myDefault is the default exported symbol in the module.

因此,没有。您始终需要仅在需要使用它们的这些代码位置中导入要显式使用的符号。