假设我有一个如下所示的接口A:
interface A {
prop1: string
prop2: string
}
Run Code Online (Sandbox Code Playgroud)
我像这样初始化对象obj:
const obj: Partial<A> = { prop1: 'xyz' }
Run Code Online (Sandbox Code Playgroud)
有没有办法将obj 强制转换为A并自动设置任何未在obj 中定义但在A 中需要的属性为null或undefined?如果可能,我只想在变量的初始化时使用部分,并坚持函数参数中的“完整”类型。
我不能把A改成一个班级。
Ale*_*hin 10
这个答案已经很晚了,但我会留下它,以防以后有人遇到。
Typescript 与类型有关,它们在编译时用于检查代码是否正确,但在运行时被删除以将代码转换为纯 JavaScript。这意味着,无法使用打字稿功能添加任何属性。
但是,您可以定义一个接受部分对象并设置默认属性的函数:
function complete(obj: Partial<A>): A {
return Object.assign({
prop1: 'default1',
prop2: 'default2'
}, obj);
}
const partial: Partial<A> = { prop1: 'xyz' }
const a: A = complete(partial)
console.log(a) // { prop1: 'xyz', prop2: 'default2' }
Run Code Online (Sandbox Code Playgroud)
如果您想将缺少的属性设置为 undefined,相同的函数将起作用,但您将无法将返回的对象强制转换为A,因为A要求所有属性都是字符串而不是null或undefined
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |