私は次のtsconfig.jsonを持っています
{
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"baseUrl": "src",
"isolatedModules": true,
"jsx": "preserve",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"lib": ["dom", "dom.iterable", "esnext"],
"module": "esnext",
"moduleResolution": "node",
"noEmit": true,
"noImplicitAny": true,
"noUnusedLocals": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"strict": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
"target": "es5",
"types": ["node", "jest"]
},
"include": ["./src/**/*.ts", "./src/**/*.tsx"],
"plugins": [
{
"name": "typescript-tslint-plugin"
}
]
}
私はnoImplicitAny
設定しましたが、typescriptは代わりにこのオブジェクトのタイプを推測しています:
export const routes = [
{
exact: true,
id: "home",
main: {
component: Home,
},
path: "/",
},
{
id: "audit-report",
main: {
component: AuditReport,
},
path: "/reports/audit",
},
];
このオブジェクトは型指定されていないため、エラーが発生すると予想していました。
noImplictAny
タイプが指定されていないだけで、トリガ・エラーとtypescriptですが、暗黙のうちに想定してany
、それが変数に関する余分な情報を持っていないため。タイプが指定されていない場合、typescriptはのタイプを簡単に推測できますroutes
。これを不適切に使用すると(つまり、存在しないプロパティにアクセスすると)エラーが発生するため、コンパイラに関する限り、これはすべてタイプセーフです。
私は通常、コンパイラに可能な限り型を推測させることをお勧めします。すべてを明示的に入力すると、多くのノイズが追加されますが、価値が限られていることがわかります(推測された型を本当に知る必要がある場合は、ホバーすると推測された型を確認できます)
本当に本当にすべてのタイプを強制的に指定したい場合は、このtslintルールを使用できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加