Typescript: Dukungan properti konstruktor kelas ES6

Dibuat pada 21 Mar 2016  ·  3Komentar  ·  Sumber: microsoft/TypeScript

TypeScript Version:

1.7.5

Kode

class Foo extends React.Component<any, any> {
 // ... some class definitions
}
Foo.defaultProps = {
  bar: 'baz'
}

Perilaku yang diharapkan:

Tidak ada kesalahan.

Perilaku sebenarnya:

TS2339: Properti 'defaultProps' tidak ada pada tipe 'typeof Foo'.

Deskripsi

Hai, Saya ingin membuat kelas react menggunakan skrip tipe dengan

Alangkah baiknya jika saya dapat mengatur properti kelas seperti di atas daripada badan kelas. Sepertinya naskah ketikan tidak mendukungnya?

Question

Komentar yang paling membantu

Kesalahannya adalah secara default tidak ada properti statis defaultProps pada Foo . Jadi, Anda hanya perlu memberi tahu kompiler bahwa Anda menginginkan properti seperti itu.

class Foo extends React.Component<any, any> {
    static defaultProps: any;
}

Foo.defaultProps = {
  bar: 'baz'
}

Secara umum, jika props adalah dari beberapa tipe P bukan any , maka itu akan menjadi class Foo extends React.Component<P, ... dan static defaultProps: P;

Semua 3 komentar

Kesalahannya adalah secara default tidak ada properti statis defaultProps pada Foo . Jadi, Anda hanya perlu memberi tahu kompiler bahwa Anda menginginkan properti seperti itu.

class Foo extends React.Component<any, any> {
    static defaultProps: any;
}

Foo.defaultProps = {
  bar: 'baz'
}

Secara umum, jika props adalah dari beberapa tipe P bukan any , maka itu akan menjadi class Foo extends React.Component<P, ... dan static defaultProps: P;

Anda juga dapat menggunakan penggabungan modul untuk kode yang sedikit lebih sedikit:

class Foo { ... }
namespace Foo {
  export const defaultProps = {
    ...
  }
}

Terima kasih banyak atas jawaban yang baik! : +1:

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

zhuravlikjb picture zhuravlikjb  ·  3Komentar

seanzer picture seanzer  ·  3Komentar

wmaurer picture wmaurer  ·  3Komentar

siddjain picture siddjain  ·  3Komentar

jbondc picture jbondc  ·  3Komentar