我是TypeScript的新手。假设我们有一个名为o
的对象,如下所示:
let o = {
a: "foo",
b: 12,
c: "bar"
};
然后,let { a, b } = o;
。
据我所知,let { a, b } = o;
表示 JS 中的var a = o.a, b = o.b;
。我理解这种语法。
但是,我想到let { a, b }: { a: string, b: number } = o;
时的观点。
此处的示例:the example
请解释{ a: string, b: number }
的目的是什么。
谢谢
答案 0 :(得分:2)
您引用的语法分别将局部变量a
和b
明确声明为string
和number
,它等同于:
let a: string = o.a;
let b: number = o.b;
在这个简单的编码情况下,可以很容易地从对象中推断出类型,但是您可能有一个不同的类型要分配或从API返回值,您需要说明属性的预期类型是什么。
您正在使用API的更适用的实际示例可能如下所示:
interface MyAPIResponse {
a: string;
b: number;
}
httpService.get('endpoint').then(({a, b}: MyAPIResponse) => {
// 'a' will have type string, and 'b' will have type number
});
答案 1 :(得分:1)
我认为在解构后编译器无法检测到a
和b
的类型时,这是一个功能。那么为什么这样做是为了明确给出变量的类型。但是现在没有{ a: string, b: number }
编译器就可以检测到类型。