如何用 ESM 导入替换 <reference path/> 指令?

How to replace <reference path/> directive with ESM import?

我正在尝试编写一个 TypeScript 应用程序,但得出的结论是我不喜欢 <reference path /> 三重斜杠指令。我发现使用 import 'something' 更合适。

但是当我尝试替换我的参考路径时,我不断收到模块未知的错误消息。

这是我的文件夹结构:

/app
    /ViewModels
        ApplicationViewModel.ts
    app.ts

ApplicationViewModel.ts

module ApplicationVM {
    export class ApplicationViewModel {
        constructor(public test:string) {
        }
    }
}

app.ts

/// <reference path="ViewModels/ApplicationViewModel.ts" />

var a = new ApplicationVM.ApplicationViewModel('test');

这个很好用。如何让以下代码也能正常工作?

import * as App from 'noidea';
var a = new App.ApplicationViewModel('test');

对于 'noidea' 我试过:ViewModels/ApplicationViewModelApplicationVM asl。我什至将它与 <reference path /> 结合使用,但它也没有帮助。

从ApplicationViewModel.ts中删除模块声明(如果使用外部模块,每个文件已经是一个模块):

export class ApplicationViewModel {
    constructor(public test:string) {
    }
}

然后在你的app.ts

import * as App from './ViewModels/ApplicationViewModel';
var a = new App.ApplicationViewModel('test');

你需要使用所谓的external modules:

ApplicationViewModel.ts

module ApplicationVM {
    export class ApplicationViewModel {
        constructor(public test:string) {
        }
    }
}

export = ApplicationVM;

app.ts

import { ApplicationViewModel } from "./ViewModels/ApplicationViewModel"
var a = new ApplicationViewModel('test');