Here is SystemJS + TypeScript plunk,從official Angular plunk template創建。.ts文件不被視爲TypeScript模塊
它拋出
(SystemJS) SyntaxError: Missing initializer in const declaration
at eval()
...
錯誤和明顯評估的.ts文件作爲普通的JavaScript時,文件不包含import
或export
聲明:
main.ts
const foo: boolean = 'foo';
console.log(foo);
config.js
System.config({
//use typescript for compilation
transpiler: 'typescript',
//typescript compiler options
typescriptOptions: {
emitDecoratorMetadata: true
},
paths: {
'npm:': 'https://unpkg.com/'
},
//map tells the System loader where to look for things
map: {
'app': './src',
...
},
//packages defines our app package
packages: {
app: {
main: './main.ts',
defaultExtension: 'ts'
},
...
}
});
的index.html
...
<script src="https://unpkg.com/[email protected]/dist/system.js"></script>
<script src="config.js"></script>
<script>
System.import('app')
.catch(console.error.bind(console));
</script>
...
但the same plunk is fine當文件具有ES6模塊的跡象:
main.ts
const foo: boolean = 'foo';
console.log(foo);
export default null;
顯然,如果一個文件有.ts擴展名,I寧願將其評估爲TypeScript,無論它是否導入。
爲什麼在此設置中會發生這種情況?這怎麼解決?
您應該使用'plugin-typescript'。 'systemjs'不附帶譯碼器,所以'transpiler:'typescript''不起作用 – unional
我不認爲這是真的。如果出現'export'語句,TS將起作用。這就是問題所在。否則'const foo:boolean ='foo''會拋出一個語法錯誤,不是嗎? – estus