繁体   English   中英

使用TypeScript的默认导入

[英]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中进行了测试。 希望对您有所帮助:

原版的

  1. import Person from "classes/person";
  2. import Englishman from "classes/englishman";

换测试

  1. import Person from './person';
  2. import Englishman from './classes/englishman';

也许您需要检查目录树。

  1. 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
  • 节点v5.4.1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM