기본 속성 값이 존중되도록 객체를 클래스 유형으로 유형 변환 할 수 있습니까? 예를 들어타입 캐스팅시 Typescript 기본 속성
:
class Person {
name: string = "bob";
age: number;
sex: string;
}
var data = {
"age": 23,
"sex": "male"
}
var p = <Person>data;
console.log(p.name); // -> undefined
그래서 p.name
는 밥이있다 할 수있는 가장 간단한 방법은 무엇입니까?
*이 작동하는 것 같다
편집 :
var record : Person = Object.assign(new Person(), p);
이 좋은 또는 나쁜 관행인가?
당신이 당신의 질문을 명확히해야합니다 다음 캐스팅 피하기를 필드와 유형을 적용하는 대신 명시 적으로 변수의 유형을 설정합니다. 객체를 캐스팅 할 때 클래스의 인스턴스를 원하거나 유형을 적용합니까? 예를 들어'var p : Person = {name = "default", ... data}'는 타입을 작동시키고 시행하지만 클래스의 인스턴스가 아닙니다. 이를 위해 이니셜 라이저를 사용하는 클래스 생성자를 사용하는 것이 더 나을 것입니다. 참조하십시오 : http://stackoverflow.com/questions/14142071/typescript-and-field-initializers/37682352#37682352 –
json의 데이터로 채워진 클래스 인스턴스가 필요합니다. – Guerrilla