首页 文章

使用TypeScript进行默认导入

提问于
浏览
2

使用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:找不到名字'Person' . [13:53:43] TypeScript:2个语义错误

2 回答

  • 0

    经过一些更改后,它适用于我,在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' }
    
    • tsc版本1.8.2

    • node v5.4.1

  • 0

    确保您正在使用ES6目标进行编译,如果我没记错,ES5仍然是默认目标 .

相关问题