javascript - Typescript Çift Fonksiyon Uygulaması
Aynı Typescript sınıfında aşağıdaki iki fonksiyon imzasını tanımladım, yani,
public emit<T1>(event: string, arg1: T1): void {}
ve
public emit<T1,T2>(event: string, arg1: T1, arg2: T2): void {}
Ancak TypeScript'i derlerken aşağıdaki hatayı alıyorum
error TS2393: Duplicate function implementation.
Parametre sayılarının farklı olduğu durumlarda TypeScript'te fonksiyonları aşırı yükleyebileceğinizi düşünmüştüm. Yukarıdaki imzaların sırasıyla 2 ve 3 parametreye sahip olduğunu göz önünde bulundurarak, neden bu derleme hatasını alıyorum?
Cevap #1
Kodunuzun bu şekilde olduğunu varsayıyorum:
public emit<T1>(event: string, arg1: T1): void {}
public emit<T1,T2>(event: string, arg1: T1, arg2: T2): void {}
public emit(event: string, ...args: any[]): void {
// actual implementation here
}
Sorun, ilk 2 satırdan sonra {} olmasıdır. Bu aslında bir işlevin boş bir uygulamasını tanımlar, yani şöyle bir şeydir:
function empty() {}
Fonksiyon için yalnızca bir tip tanımlamak istiyorsunuz, bir uygulama değil. Bu nedenle boş blokları sadece bir noktalı virgül ile değiştirin:
public emit<T1>(event: string, arg1: T1): void;
public emit<T1,T2>(event: string, arg1: T1, arg2: T2): void;
public emit(event: string, ...args: any[]): void {
// actual implementation here
}
Cevap #2
Çünkü IDE içinde hem Typescript hem de JavaScript dosyasını aynı pencerede açıyorsunuz, bu problemi üç şekilde çözebilirsiniz:
İlk Çözüm:
Sadece TypeScript dosyasını veya sadece JavaScript dosyasını aç
İkinci çözüm - bu komutu çalıştırın:
tsc --init
Bu komut, TypeScript yapılandırması için tsconfig.json dosyasını oluşturacaktır
Son Çözüm yaz
export{}
Dosyanın üstünde
Cevap #3
export {}
Bu satırı typescript dosyasının en üstüne ekleyin
