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