Here's a very strict TypeScript configuration file. All the safety checks you could ever want. "Look ma, no errors!"
{
"compilerOptions": {
"lib": ["ESNext"],
"moduleResolution": "NodeNext",
"module": "NodeNext",
"target": "ESNext",
"strict": true,
"noEmit": true,
"useUnknownInCatchVariables": true,
"noImplicitOverride": true,
"noFallthroughCasesInSwitch": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"exactOptionalPropertyTypes": true,
"noImplicitReturns": true,
"noUncheckedIndexedAccess": true,
"allowImportingTsExtensions": true,
"verbatimModuleSyntax": true,
"isolatedModules": true
}
}
{
"compilerOptions": {
"lib": ["ESNext"],
"moduleResolution": "NodeNext",
"module": "NodeNext",
"target": "ESNext",
"strict": true,
"noEmit": true,
"useUnknownInCatchVariables": true,
"noImplicitOverride": true,
"noFallthroughCasesInSwitch": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"exactOptionalPropertyTypes": true,
"noImplicitReturns": true,
"noUncheckedIndexedAccess": true,
"allowImportingTsExtensions": true,
"verbatimModuleSyntax": true,
"isolatedModules": true
}
}
Although, nowadays I'm just using bun init
...