我正在尝试将这个谷歌动态表单用于 Angular 11,但出现错误。
这是逐字复制的所有代码,显然它在这里工作但在我的开发机器上给我错误。 https://stackblitz.com/edit/angular-sccsnu?file=src%2Fapp%2Fquestion-base.ts
√ 编译成功。
Error: src/app/_models/question-base.ts:21:5 - error TS2322: Type 'T | undefined' is not assignable to type 'T'.
'T' could be instantiated with an arbitrary type which could be unrelated to 'T | undefined'.
Type 'undefined' is not assignable to type 'T'.
'T' could be instantiated with an arbitrary type which could be unrelated to 'undefined'.
21 this.value = options.value;
~~~~~~~~~~
答案 0 :(得分:4)
添加!改为'this.value = options.value!;' 应该修复它,因为'!' 操作符表示这个值不可为空。
答案 1 :(得分:1)
考虑options
的类型
options: {
value?: T;
}
所以 options.value
将是 T | undefined
类型,因为 ?
暗示值是可选的
现在this.value
的类型
value: T;
所以 this.value
的类型为 T
现在假设我们没有为 options.value
提供任何值,那么我们将分配 this.value = undefined
,这在理想情况下应该警告我们,因为 this.value
的类型为 T
简而言之,解决方案要么删除可选参数?
,要么更改this.value
的类型
value: T | undefined
答案 2 :(得分:1)
您可以摆脱“Type 'T | undefined' is notassignable to type 'T'”的所有错误 通过将 tsconfig.json 文件中的属性 "strict" 设置为 false