Katakanlah saya memiliki tipe berikut:
type Event = {
name: string;
dateCreated: string;
type: string;
}
Saya sekarang ingin memperluas jenis ini, yaitu
type UserEvent extends Event = {
UserId: string;
}
Ini tidak berhasil. Bagaimana saya bisa melakukan ini?
javascript
typescript
Kousha
sumber
sumber
type
kunci digunakan untuk mendefinisikan alias tipe , bukan antarmuka atau kelas.Jawaban:
Kata kunci hanya
extends
dapat digunakan untuk antarmuka dan kelas.Jika Anda hanya ingin mendeklarasikan tipe yang memiliki properti tambahan, Anda bisa menggunakan tipe persimpangan :
UPDATE untuk TypeScript 2.2, sekarang mungkin untuk memiliki antarmuka yang memperluas tipe seperti objek , jika jenisnya memenuhi beberapa batasan:
Tidak bekerja sebaliknya -
UserEvent
harus dinyatakan sebagai antarmuka, bukantype
jika Anda ingin menggunakanextends
sintaks.Dan masih tidak mungkin untuk digunakan
extend
dengan tipe arbitrer - misalnya, itu tidak berfungsi jikaEvent
merupakan parameter tipe tanpa kendala.sumber
interface A<T> extends B<T> {blar}
Antarmuka hanya dapat memperluas jenis objek atau persimpangan jenis objek dengan anggota yang dikenal secara statisinterface Identifiable<T> extends T { id: string }
memberi saya kesalahan "Antarmuka hanya dapat memperluas jenis objek atau persimpangan jenis objek dengan anggota yang dikenal secara statis.ts (2312)"Anda dapat memotong jenis:
suatu tempat dalam kode Anda sekarang dapat Anda lakukan:
sumber
Apa yang ingin Anda capai setara dengan
Cara Anda mendefinisikan jenis tidak memungkinkan untuk menentukan pewarisan, namun Anda dapat mencapai sesuatu yang serupa menggunakan tipe persimpangan, seperti yang ditunjukkan artem .
sumber
interface
ketika saya benar-benar berartitype
Mungkin pendekatan di bawah ini akan bermanfaat bagi seseorang yang TS dengan reaksi
sumber