У меня есть такой tsconfig.json:
{
"compilerOptions": {
"lib": ["es2017", "dom"],
"module": "umd",
"outDir": "dist",
"target": "es5",
"declaration": true
},
"compileOnSave": true,
"files": [
"myClass.ts"
"demo.ts"
]
}
Мой машинописный текст, demo.ts
:
import { MyClass } from './myClass';
(() => {
console.log('fired IIFE');
document.onreadystatechange = function () {
if (document.readyState === 'interactive') {
console.log('hello world', MyClass);
}
};
})();
Который компилируется в:
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "./myClass"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var myClass_1 = require("./myClass");
(function () {
console.log('fired IIFE');
document.onreadystatechange = function () {
if (document.readyState === 'interactive') {
console.log('hello world', myClass_1.MyClass);
}
};
})();
});
Мой HTML:
<!DOCTYPE HTML>
<html>
<head>
<title>Test</title>
<script src="./dist/myClass.js"></script>
<script src="./dist/demo.js"></script>
</head>
<body>
<p>test</p>
</body>
</html>
Я также пробовал:
<!DOCTYPE HTML>
<html>
<head>
<title>Test</title>
</head>
<body>
<p>test</p>
<script src="./dist/myClass.js"></script>
<script src="./dist/demo.js"></script>
</body>
</html>
Ни один из способов не выполняет сценарий, и ни один оператор журнала не печатается. Что я делаю не так?
window.myClass
(думаю)? У меня ограниченный опыт работы с модулями UMD. - person   schedule 15.02.2019import { MyClass } from './myClass';
в верхней части demo.ts IIFE никогда не срабатывает, потому что он заключен в модуль UMD. Поскольку он импортируетMyClass
, вы ссылаетесь на него таким образомMyClass
- person inorganik   schedule 15.02.2019import './umd-foo.js'
- person JGFMK   schedule 15.02.2019