打字稿不抱怨关于不在构造函数中声明类型

时间:2019-11-27 06:53:36

标签: typescript

我是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"]
}

2 个答案:

答案 0 :(得分:2)

noImplicitAny应该设置为true。如果为false,则表示隐式any被接受,因此声明为不具有类型的变量也将隐式具有类型any

答案 1 :(得分:1)

authenticationauthenticatedRoute参数类型是从默认值推断出来的,但是context默认具有any类型,因为您将noImplicitAny设置为{{ 1}}。有关编译器标志的更多信息,请参见Compiler Options