我有这个设置:
print
我正在尝试做的是使用我想要的类给定类型的键构建一个字典,让我更改底层实现而不触及消费代码。这失败并显示以下消息
//./things/Base.ts
export default class Base{
constructor(){
console.log("HI I AM A BASE THING");
}
}
//things.ts
import Base = require('./things/Base');
export = {
defaultThing: Base
};
//entry.ts
import Things = require('./things');
new Things.defaultThing();
为什么这是正确的成语?
答案 0 :(得分:12)
import Base = require(...)
与export default class Base
的搭配不合适。
如果您将console.dir(Base)
添加到things.ts
,您会看到Base
实际上是一个模块,而不是一个类:
{ __esModule: true, default: [Function: Base] }
如果您将things.ts
中的导入更改为
import Base from './things/Base';
然后你的例子开始工作。
typescript language specification:
中给出了解释表单的导入要求声明
import m = require("mod");
等同于ECMAScript 2015导入声明
import * as m from "mod";
es6表单始终导入m
作为模块,即使它包含默认导出。