配置:
{
"compilerOptions": {
"outDir": "./public/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es5",
"jsx": "react" ,
"allowJs" : true,
"noImplicitAny": false,
"suppressImplicitAnyIndexErrors": true,
"experimentalDecorators" : true,
"lib": ["es6", "es7", "dom"]
},
"files": [ "./index.tsx" ],
"exclude": [
"node_modules"
]
}
代码:
@sets
class Home { }
function sets(target) {
target.prototype.age = 'aaa';
}
var home = new Home
console.log(home.age)
报错:
但是用es7,同样的代码就可以使用。也不会报错。
要给出Home的类型定义,还有你的配置文件里noImplicitAny项都重复了
====编辑====
可以定义一个命名空间,专门放置自定义的相关类型定义,假设命名空间名是"a";
只要不执行这行代码console.log(home.age),上面的代码编译都是通过的,如果访问了age属性,ts就会去校验Home类型定义