TypeScript:如何在不指定对象所有属性的情况下从对象属性中提取值
在我的用例中,我从服务器接收一个JSON对象作为响应。这个对象包含200多个属性,其中我只关心其中的2个。因此,如果响应对象如下所示:TypeScript:如何在不指定对象所有属性的情况下从对象属性中提取值,typescript,Typescript,在我的用例中,我从服务器接收一个JSON对象作为响应。这个对象包含200多个属性,其中我只关心其中的2个。因此,如果响应对象如下所示: { a: "a", b: "b", . . . z: "z" } 但是我只想让我们假设a和z,如何在不定义整个响应对象的情况下使用typescript呢? 这不起作用,并且对象上不存在属性 const myObject: MyObject = { myA: resObject.a,
{
a: "a",
b: "b",
.
.
.
z: "z"
}
但是我只想让我们假设a和z,如何在不定义整个响应对象的情况下使用typescript呢?
这不起作用,并且对象上不存在属性
const myObject: MyObject = {
myA: resObject.a,
myZ: resObject.z
}
谢谢>P> >代替“任意”,充分利用Typescript,考虑这样的情况,使用类型变窄:
const resObject = {
a: "sdfsdf",
b: 'sad',
c: "Sdf",
z: "sdfzzzzz"
}
interface MyObject extends Record<string, any> {
myA: string,
myZ: string
}
const isMyObject = (candidate: any): candidate is MyObject => {
return ('a' in candidate && 'z' in candidate)
}
if (!isMyObject(resObject)) throw new Error('Not MyObject');
const myObject: MyObject = {
myA: resObject.a,
myZ: resObject.z
}
const resObject={
答:“sdfsdf”,
b:‘悲伤’,
c:“自卫队”,
z:“SDFZZZZ”
}
接口MyObject扩展记录{
myA:字符串,
myZ:字符串
}
常量isMyObject=(候选对象:任意):候选对象是MyObject=>{
return('a'在候选者中&'z'在候选者中)
}
如果(!isMyObject(resObject))抛出新错误(“非MyObject”);
常量myObject:myObject={
myA:resObject.a,
myZ:resObject.z
}
您没有显示MyObject
的定义。你写的东西有a
和b
属性吗?您也不显示如何声明resObject
。如果您没有或不能提供完整的界面,将其声明为any
会使事情变得更简单。谢谢,将其声明为any解决了我的问题!