Cara menginisialisasi objek di TypeScript
Saya memiliki sebuah kelas model sederhana
export interface Category {
name: string;
description: string;
}
Saya perlu mendeklarasikan dan menginisialisasi sebuah variabel dalam komponen Angular. Sudah dicoba:
category: Category = {};
Kesalahan: {} tidak dapat ditetapkan ke Kategori
category: Category = new Category();
error: Kategori merujuk pada sebuah tipe, tetapi disebut sebagai nilai..
Ada saran?
Jawaban #1
Ada beberapa cara untuk menyelesaikan masalah ini, tergantung pada hasil yang Anda inginkan.
Cara 1: Ubah interface Anda menjadi class
export class Category {
name: string;
description: string;
}
const category: Category = new Category();
Cara 2: Perluas interface Anda sebagai class
export class CategoryObject implements Category {
}
const category: Category = new CategoryObject();
Cara 3: Tentukan sepenuhnya objek Anda, sesuai dengan interface
const category: Category = {
name: 'My Category',
description: 'My Description',
};
Cara 4: Jadikan properti bersifat opsional
export interface Category {
name?: string;
description?: string;
}
const category: Category = {};
Cara 5: Ubah tipe variabel Anda untuk menggunakan Partial<T>
export interface Category {
name: string;
description: string;
}
const category: Partial<Category> = {};
Jawaban #2
Jika Anda tidak ingin mengubah definisi Anda dari interface menjadi class, Anda juga bisa melakukan:
let category = <Category>{ };
Jika tidak, Anda bisa mengikuti jawaban lain dan mengubah Category Anda menjadi sebuah kelas.
edit: sesuai dengan komentar ruffin di bawah, jika antarmukanya
export interface ITiered { one: { two: { three: function (x) {...} } } }
dan kamu mencoba let x={} as ITiered, maka kamu akan mendapatkan error saat memanggil sesuatu seperti x.one.two.three()
Jawaban #3
export interface Category {
name: string;
description: string;
}
category = {} as Category ;
Edit: Ingin menaruh komentar di bawah ini dalam jawaban agar orang tahu mengapa jawaban saya salah. Saya mengira Anda akan selalu menetapkan segera setelah itu, tetapi itu bukan asumsi yang baik untuk dibuat.
sekarang Anda memiliki sebuah objek dalam sistem Anda yang diasumsikan memiliki suatu tipe, tetapi dengan beberapa properti yang diperlukan hilang. ini hanyalah saran buruk yang menyebabkan kesalahan di suatu titik nanti.
Jawaban #4
Dalam Typescript, jika Anda ingin menggunakan Inisialisasi Objek, Anda perlu mendefinisikan semua properti dalam kelas.
let category: Category = {
name: '',
description: ''
};
Dengan cara ini, model Anda masih bisa tetap menjadi sebuah antarmuka.
