当我试图运行在浏览器中我在调试控制台窗口中收到以下消息应用程序:TypeScript导出和导入模块名称尚未加载上下文:_。使用要求([])
Module name "Person" has not been loaded yet for context: _. Use require([])
当然如果合并的.ts的内容文件的所有工作完美。
我创建Person.ts
文件:
export interface IPerson {
firstName: string;
lastName: string;
}
export class Person implements IPerson {
private _middleName: string;
public set middleName(value: string) {
if (value.length <= 0)
throw "Must supply person name";
this._middleName = value;
}
public get middleName(): string {
return this._middleName;
}
constructor(public firstName: string, public lastName: string) { };
Validate() {
alert('test');
}
}
和app.ts
文件:
import {Person} from "./Person"
class Employee extends Person {
Validate() {
alert('new test inside Employee');
}
}
let p1 = new Person("Shahar", "Eldad");
p1.Validate();
try {
p1.middleName = "";
}
catch (err) {
alert(err);
}
let p2 = new Employee("Shahar", "Eldad");
p2.Validate();
document.body.innerHTML = p1.firstName + " " + p2.lastName;
和最后我的index.html
文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="windows-1255">
<title>Insert title here</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.2/require.min.js" data-main="app.js"></script>
</head>
<body>
</body>
</html>
和最后我的tsconfig.json
文件:
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,
"target": "es6"
},
"files": [
"app.ts",
"Person.ts"
]
}
我最初试图与目标ES5到transpile,然后我搬到了ES6(也是最后一次移动到tsconfig.json文件)
更新
我不喜欢@Louis,似乎工作 - 从我的问题中复制所有文件,只编辑tsconfig.json来保存amd和es5。我看不出复制前后有什么区别。奇怪的。
现在人们尖叫的定义是这样的:) 不匹配匿名定义(模块:功能(需,出口,PERSON_1) –
看到浏览器尝试什么文件,当你在网络选项卡中查看调试器加载? – Louis
我看到index.html,require.min.js和app.js –