gpt4 book ai didi

typescript - 将部分接口(interface)类型的对象转换为 TypeScript 中的 "full"接口(interface)类型

转载 作者:行者123 更新时间:2023-12-03 15:15:05 28 4
gpt4 key购买 nike

假设我有一个接口(interface) 一个 看起来像这样:

interface A {
prop1: string
prop2: string
}

我初始化对象 对象 像这样:
const obj: Partial<A> = { prop1: 'xyz' }

有什么方法可以投 对象 一个 并自动设置 中未定义的任何属性对象 但在 中需要一个 nullundefined ?如果可能,我只想在变量初始化时使用部分,并坚持函数参数中的“完整”类型。

我无法改变 一个 成为一个类(class)。

最佳答案

这个答案已经很晚了,但我会留下它,以防以后有人遇到。
Typescript 是关于类型的,它在编译时用于检查代码是否正确,但在运行时将其删除以将代码转换为纯 JavaScript。这意味着,无法使用 typescript 功能添加任何属性。
但是,您可以定义一个接受部分对象并设置默认属性的函数:

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' }
如果您想将缺少的属性设置为未定义,相同的函数将起作用,但您将无法将返回的对象强制转换为 A , 因为 A要求所有属性都是字符串,而不是 nullundefined

关于typescript - 将部分接口(interface)类型的对象转换为 TypeScript 中的 "full"接口(interface)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50261190/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com