打字稿:严格检查 "Any"
Typescript: Strict Checks Against "Any"
我的 Typescript 配置允许编译以下代码:
const thing : any = 123
const name : string = thing
显然,name
实际上不是 string
,但我将其声明为 any
的事实使我的类型检查器忽略了它。
如何配置我的 tsconfig.json
以 给我一个错误,直到我为我的对象提供正确的类型 ?
我目前的配置:
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noEmitOnError": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"strictNullChecks": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*",
"src/types/*"
]
}
},
"include": [
"src/**/*.ts"
]
}
but the fact that I declare it as any makes my typechecker ignore it.
这是设计使然。通过说它 any
你 明确地 要求类型检查器忽略它,这就是它所做的
any
类型在设计上禁用了类型检查器。从 TypeScript 3.0 开始,还有另一种称为 unknown
的类型,它基本上是 any
.
的严格版本
const thing: unknown = 123;
const name: string = thing; // <- error TS2322: Type 'unknown' is not assignable to type 'string'.
您可以在 release notes of TypeScript 3.0 中找到更多相关信息。
目前——发布后大约两年——,该类型尚未列为 basic types on the website. However, there is a beta for a new version of the website 之一,其中还列出了 unknown
.
我的 Typescript 配置允许编译以下代码:
const thing : any = 123
const name : string = thing
显然,name
实际上不是 string
,但我将其声明为 any
的事实使我的类型检查器忽略了它。
如何配置我的 tsconfig.json
以 给我一个错误,直到我为我的对象提供正确的类型 ?
我目前的配置:
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noEmitOnError": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"strictNullChecks": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*",
"src/types/*"
]
}
},
"include": [
"src/**/*.ts"
]
}
but the fact that I declare it as any makes my typechecker ignore it.
这是设计使然。通过说它 any
你 明确地 要求类型检查器忽略它,这就是它所做的
any
类型在设计上禁用了类型检查器。从 TypeScript 3.0 开始,还有另一种称为 unknown
的类型,它基本上是 any
.
const thing: unknown = 123;
const name: string = thing; // <- error TS2322: Type 'unknown' is not assignable to type 'string'.
您可以在 release notes of TypeScript 3.0 中找到更多相关信息。
目前——发布后大约两年——,该类型尚未列为 basic types on the website. However, there is a beta for a new version of the website 之一,其中还列出了 unknown
.