Here is SystemJS + TypeScript plunk,由official Angular plunk template创建。
如图所示,它忽略了所有TypeScript类型错误,唯一记录到控制台的是foo
:
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/systemjs@0.19.31/dist/system.js"></script>
<script src="config.js"></script>
<script>
System.import('app')
.catch(console.error.bind(console));
</script>
...
通常我更喜欢TypeScript来停止应用程序执行并抛出类型错误。
此设置有什么问题?为什么TypeScript错误被抑制?如何更改此设置?
答案 0 :(得分:1)
您可以将plugin-typescript用于SystemJS,从版本6开始,可以选择在浏览器中启用类型检查(请注意this option is removed in version 7)。
但是你必须完全按照readme中的拼写确定该插件,也就是说,SystemJS配置中的typescript
包含main
和meta
,如下所示:
typescript: {
"main": "lib/typescript.js",
"meta": {
"lib/typescript.js": {
"exports": "ts"
}
}
}
然后,由于此main
,您必须将typescript
中的map
更改为
'typescript': 'npm:typescript@2.2.1'
然后,您还需要将这些内容添加到typescriptOptions
:
experimentalDecorators: true,
typeCheck: true
完成这些更改后,控制台中将打印类型错误:
unpkg.com/plugin-typescript@6.0.4/lib/plugin.js:498 TypeScript [Error]
Type '"foo"' is not assignable to type 'boolean'. (TS2322)
但我认为有一种方法可以阻止程序执行类型错误 - noEmitOnErrors
对于plugin-typescript没有任何影响,据我所知。
我保存了更新的插件here,不知道它会保留多长时间。