title: Enable Strict Template Checking impact: HIGH impactDescription: catches undefined components and props at compile time type: capability
Impact: HIGH - catches undefined components and props at compile time
By default, vue-tsc does not report errors for undefined components in templates. Enable strictTemplates to catch these issues during type checking.
Add vueCompilerOptions to the tsconfig that includes Vue source files. In projects with multiple tsconfigs (like those created with create-vue), this is typically tsconfig.app.json, not the root tsconfig.json or tsconfig.node.json.
Incorrect (missing strict checking):
{
"compilerOptions": {
"strict": true
}
// vueCompilerOptions not configured - undefined components won't error
}
Correct (strict template checking enabled):
{
"compilerOptions": {
"strict": true
},
"vueCompilerOptions": {
"strictTemplates": true
}
}
| Option | Default | Effect |
|---|---|---|
strictTemplates |
false |
Enables all checkUnknown* options below |
checkUnknownComponents |
false |
Error on undefined/unregistered components |
checkUnknownProps |
false |
Error on props not declared in component definition |
checkUnknownEvents |
false |
Error on events not declared via defineEmits |
checkUnknownDirectives |
false |
Error on unregistered custom directives |
If strictTemplates is too strict, enable individual checks:
{
"vueCompilerOptions": {
"checkUnknownComponents": true,
"checkUnknownProps": false
}
}