Typescript &引用;设{a,b}:{a:string,b:number}=o";打字
我是打字新手。假设我们有一个名为Typescript &引用;设{a,b}:{a:string,b:number}=o";打字,typescript,syntax,Typescript,Syntax,我是打字新手。假设我们有一个名为o的对象,如下所示: let o = { a: "foo", b: 12, c: "bar" }; 然后,设{a,b}=o。 据我所知,让{a,b}=o指变量a=o.a,b=o.b在JS中。我理解这个语法 但是,当谈到让{a,b}:{a:string,b:number}=o 下面的示例: 请解释{a:string,b:number}的用途。 谢谢我认为这是一个特性,在解构后编译器无法检测a和b的类型。那么为什么这样做是为了显式地给出变量的
o
的对象,如下所示:
let o = {
a: "foo",
b: 12,
c: "bar"
};
然后,设{a,b}=o代码>。
据我所知,让{a,b}=o代码>指变量a=o.a,b=o.b代码>在JS中。我理解这个语法
但是,当谈到让{a,b}:{a:string,b:number}=o代码>
下面的示例:
请解释{a:string,b:number}
的用途。
谢谢我认为这是一个特性,在解构后编译器无法检测a
和b
的类型。那么为什么这样做是为了显式地给出变量的类型呢。但是现在没有{a:string,b:number}
编译器可以检测类型。您引用的语法明确地将局部变量a
和b
分别声明为string
和number
,它将等价于:
let a: string = o.a;
let b: number = o.b;
在这个简单的编码案例中,可以很容易地从对象推断出类型,但是您可能需要指定不同的类型,或者从API返回值,在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
});