Typescript: Ketik 'apa saja' bukan tipe fungsi konstruktor

Dibuat pada 1 Sep 2015  ·  3Komentar  ·  Sumber: microsoft/TypeScript

class Thing extends ((function () {
    return null;
})()) {
    doThing() {
    }
}

Ini benar-benar cara memutar untuk mengatakan extends null , tetapi tipenya tidak keluar, yang canggung. Anda harus membubuhi keterangan pada IIFE dengan tipe dummy ctor seperti StringConstructor untuk memuaskan pemeriksa.

By Design

Komentar yang paling membantu

Ini kasus yang menarik, di TypeScript 2.0 saya mendeklarasikan modul swagger-client seperti: declare module 'swagger-client'; . Namun, ketika saya mencoba menggunakannya seperti:

import * as Swagger from 'swagger-client';

class Swagger extends Swagger {
  pet: any;
  constructor() {
    super({ 
      url: config.get('spec.petstore'),
      usePromise: true
    });
  }
}

Saya mendapatkan kesalahan Type 'any' is not a constructor function type .

Semua 3 komentar

Ini adalah dengan desain. satu-satunya bentuk perluasan null yang didukung adalah extends null apa pun, harus mengembalikan nilai yang tipenya memiliki tanda tangan konstruk. Kami telah mengecualikan apa pun sebagai wildcard dalam skenario ini, hanya karena kemungkinan besar kesalahan pengguna di sini daripada yang dimaksudkan. akan menarik untuk melihat apakah ada kasus penggunaan aktual di mana ini akan dibutuhkan.

Ini kasus yang menarik, di TypeScript 2.0 saya mendeklarasikan modul swagger-client seperti: declare module 'swagger-client'; . Namun, ketika saya mencoba menggunakannya seperti:

import * as Swagger from 'swagger-client';

class Swagger extends Swagger {
  pet: any;
  constructor() {
    super({ 
      url: config.get('spec.petstore'),
      usePromise: true
    });
  }
}

Saya mendapatkan kesalahan Type 'any' is not a constructor function type .

Saya mendapatkan kesalahan ini ketika saya mengimpor dari file indeks seperti:

impor {Berasal, Basis} dari '.'

dan kelas turunan terdaftar di index.ts sebelum kelas dasar:

ekspor {Berasal} dari './Berasal';
ekspor {Base} dari './Base';

Saya mengganti pesanan dan berhasil.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat