Lan*_*ley 6 javascript json typescript
这是我正在尝试做的一个更简单的例子:
export class Person{
id:Number;
name:String;
}
export class PersonForm{
// This line:
default:Person = {name: "Guy"};
// Gives the following error:
// Error:(25, 5) TS2322: Type '{ name: string; }' is not assignable to type 'Person'.
// Property 'id' is missing in type '{ name: string; }'.
// I tried <Person>{name: "Guy"} but it gives the same error.
}
Run Code Online (Sandbox Code Playgroud)
只要我没有使用不存在的属性,我怎么能让编译器忽略这个问题,或者我如何声明类,这样我就可以用这种方式进行赋值而不是新的Person(),然后只设置我想要的属性.
注意:将具有所有属性的对象发送到构造函数中并不是我期望的解决方案.另外使用接口是有效的,因为我可以声明字段是可选的,我怎么能在类中做同样的事情?
添加更多信息:
我正在努力实现的主要目标:
找到声明类(不是接口)的最佳方法,这样我就可以在一行中使用干净的代码初始化它,只设置我想要设置的参数.在Java中,您将重载构造函数或使用Builder模式.
我当然可以尝试使用构建器模式,但我正在寻找更多的打字方式来实现它,如果有的话.
我找到了最简单的方法,而且这是可能的。我想我以前已经尝试过这种方式,但事实上我使用的是“数字”和“字符串”类型而不是“数字”和“字符串”,可能会给我编译器带来误导性错误,下面的代码会产生奇迹为我:
export class Person{
constructor(
public id?: number, // make sure you use number and string types instead of Number and String types
public name?: string // make sure you make all properties optional using "?"
){}
}
export class PersonForm{
default:Person = <Person>{name: "Guy"};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1636 次 |
| 最近记录: |