我是Typescript的新手,我期望Typescript会因未为构造函数声明类型而抛出错误,但不幸的是我不是。
所以我很好奇为什么没有出错。
这就是我在做的
export interface BaseConfig {
app: express.Application,
routePermission: number,
context: any
}
export class BaseConfig implements BaseConfig {
constructor(
context,
authentication = false,
authenticatedRoute = USER_TYPE.LOGGED_IN_NORMAL_USER
) {
//intitalize Express App
this.routePermission = authenticatedRoute
this.context = context
this.app = express()
这是我的tsconfig
{
"compilerOptions": {
"moduleResolution": "node",
"experimentalDecorators": true,
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": true,
"outDir": "lib",
"sourceMap": true,
"strict": true,
"target": "es2017",
"resolveJsonModule": true,
"esModuleInterop": true,
"noImplicitAny": false
},
"compileOnSave": true,
"include": [
"src"
],
"exclude": ["node_modules"]
}
答案 0 :(得分:2)
noImplicitAny
应该设置为true。如果为false,则表示隐式any被接受,因此声明为不具有类型的变量也将隐式具有类型any
。
答案 1 :(得分:1)
authentication
和authenticatedRoute
参数类型是从默认值推断出来的,但是context
默认具有any
类型,因为您将noImplicitAny
设置为{{ 1}}。有关编译器标志的更多信息,请参见Compiler Options。