typescript - Basit bir nesneyi bir sınıf ile sarabilir miyim?
Bir nesneyi bir sınıfa haritalamayı düşünüyorum, belki teknik terimlem yanlış olabilir, bu yüzden açıklamaya çalışacağım.
var car = {wheels:4, color:"red", maxSpeed: 100}
class Car(){
wheels: number;
color: string;
maxSpeed: number
}
let wrappedCar = new Car(**car)
console.log(wrappedCar.wheels)
// 4
Bunu Typescript'te başarmanın en iyi yolu nedir? :)
Cevap #1
Bu senin için uygun olur mu?
var car = { wheels: 4, color: "red", maxSpeed: 100 }
class Car {
wheels: number;
color: string;
maxSpeed: number
}
let wrappedCar = <Car> car
console.log(wrappedCar.wheels)
Bunu yapmak için uygun çözüm, bir yapıcı kullanmak ve Nesneleri birleştirmektir:
var car = { wheels: 4, color: "red", maxSpeed: 100 }
class Car {
wheels: number;
color: string;
maxSpeed: number
constructor(carObj) {
for (var a in carObj) { this[a] = carObj[a] }
}
}
let wrappedCar = new Car(car)
console.log(wrappedCar.wheels)
Cevap #2
Eğer yapmanız gereken tek şey bir nesnenin yapısını tanımlamaksa, bir interface kullanabilirsiniz.
Böyle bir şey olurdu
interface Car {
wheels: number;
color: string;
maxSpeed: number
}
Daha sonra bunu normal şekilde kullanabilirsiniz.
let car: Car = {
wheels: 4,
color: "red",
maxSpeed: 100
}
Derleyici ayrıca bir nesnenin o arayüzü uygulayıp uygulamadığını otomatik olarak tanıyacaktır. Bu yüzden, yöntemlerinizde almayı beklediğiniz şeyleri tanımlamak için mükemmeldir.
function washCar(car: Car): void {}
washCar({
wheels: 10,
color: 'red',
maxSpeed: 100
}); // will work
washCar({
name: 'John',
age: 5
}); // will generate a compilation error
