gpt4 book ai didi

typescript - 将对象解构与 TypeScript 中的参数属性相结合

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:08 25 4
gpt4 key购买 nike

我读过 typescript 如何提供一种简写方式,您可以在构造函数参数前加上访问修饰符,它会自动在类上声明并从构造函数中复制

class Foo {
x: number;
constructor(x:number) {
this.x = x;
}
}

所以前面的例子可以重写为(notice public x:number):

class Foo {
constructor(public x:number) {
}
}

但是我不能用带有对象字面量的参数来做到这一点:

export class Hero {
constructor( {public id = 0 , public name = 'noname'}: {id?: number, name?: string } = {}) {
}
}

我收到双重错误:错误 TS1005:预期为“=”。

是否可以用 typescript 来完成?

最佳答案

TypeScript 尚不支持您对对象破坏和参数属性组合的特定要求。参见 https://github.com/Microsoft/TypeScript/issues/5326了解详情。但是你可以实现一个解决方法并为这个 puprose 定义一个接口(interface)(或类,它在 TypeScript 中并不重要),如下所示:

interface TestInterface {
id: number;
name: string;
}

class Greeter {
constructor(public greeting: string, public objectField: TestInterface) {
}

greet() {
return "Hello, " + this.greeting + " " + this.objectField.name;
}
}

let greeter = new Greeter("world", { id: 0, name: 'no name' });

alert(greeter.greet());

但是如果你将TestInterface定义为类,那么相应的构造函数将在编译的JS中。

var TestInterface = (function () {
function TestInterface() {
}
return TestInterface;
}());

关于typescript - 将对象解构与 TypeScript 中的参数属性相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44352048/

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