Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript:如何在不指定对象所有属性的情况下从对象属性中提取值_Typescript - Fatal编程技术网

TypeScript:如何在不指定对象所有属性的情况下从对象属性中提取值

TypeScript:如何在不指定对象所有属性的情况下从对象属性中提取值,typescript,Typescript,在我的用例中,我从服务器接收一个JSON对象作为响应。这个对象包含200多个属性,其中我只关心其中的2个。因此,如果响应对象如下所示: { a: "a", b: "b", . . . z: "z" } 但是我只想让我们假设a和z,如何在不定义整个响应对象的情况下使用typescript呢? 这不起作用,并且对象上不存在属性 const myObject: MyObject = { myA: resObject.a,

在我的用例中,我从服务器接收一个JSON对象作为响应。这个对象包含200多个属性,其中我只关心其中的2个。因此,如果响应对象如下所示:

{
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解决了我的问题!