[英]Default imports with TypeScript
使用tsc 1.8.9 ...为什么这些导入不起作用? 我以为TypeScript实现了ES6模块语法?
“类/ person.ts”
export default class Person {
protected _name: string;
protected _language: string;
constructor(name: string) {
this._name = name;
this.hello();
}
public hello() {
console.log("Hello, " + this._name);
console.log("Lang: " + this._language);
}
}
“类/ englishman.ts”
import Person from "person"
export default class Englishman extends Person {
constructor(name: string){
this._language = "en_GB";
super(name);
}
}
“main.ts”
import * as $ from "jquery";
import Englishman from "classes/englishman";
let tom: Person = new Englishman("Tom");
console.log(tom);
$("body").html(`<h1>TEST</h1>`);
错误:
source / main.ts(2,24):错误TS2307:找不到模块“ classes / englishman”。 source / main.ts(4,10):错误TS2304:找不到名称“人”。 [13:53:43] TypeScript:2个语义错误
确保使用ES6目标进行编译,如果我没记错的话,ES5仍然是默认目标。
经过一些更改后,它对我有用,并在ES5和ES6中进行了测试。 希望对您有所帮助:
原版的
import Person from "classes/person";
import Englishman from "classes/englishman";
换测试
import Person from './person';
import Englishman from './classes/englishman';
也许您需要检查目录树。
加
import Person from './classes/person';
。
import Person from './person'; //<-- change
export default class Englishman extends Person {
constructor(name: string){
this._language = "en_GB";
super(name);
}
}
export default class Person {
protected _name: string;
protected _language: string;
constructor(name: string) {
this._name = name;
this.hello();
}
public hello() {
console.log("Hello, " + this._name);
console.log("Lang: " + this._language);
}
}
import Englishman from './classes/englishman'; //<-- change
import Person from './classes/person'; //<-- add
class HelloWorld{
public static main(){
let tom: Person = new Englishman("Tom");
console.log(tom);
}
}
HelloWorld.main();
Hello, Tom
Lang: en_GB
Englishman { _language: 'en_GB', _name: 'Tom' }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.