Setelah memperbarui compiler TypeScript dari versi 1.4.1 ke 1.5.0 beta, kode sumber yang disertakan dalam proyek saya menjadi membuat log kesalahan seperti 'Peta tidak ditemukan'.
Jadi, saya meneliti masalah ini, dan saya mencapai kesimpulan. Lib.d.ts menjadi tidak mengandung definisi Peta dan Set kecuali ES6 dipilih di tsconfig.json.
Sebenarnya Map and Set adalah spesifikasi dari ES6. Wajar jika kita tidak dapat menggunakan Map dan Set dalam proyek yang menargetkan ES5 atau lebih rendah.
Tapi kita bisa menggunakan Map dan Set bahkan jika saya memilih ES5 sebagai target sebelum TypeScript 1.4.1.
Saya tahu bahwa membuatnya diaktifkan untuk menggunakan Peta dan Set dalam proyek yang dibuat untuk ES5 mengandung risiko.
Karena ada beberapa browser yang tidak mendukung Map and Set.
Namun, saya pikir lebih baik membuat beberapa properti konfigurasi yaitu untuk beralih menggunakan definisi ini atau tidak. Tidakkah menurutmu begitu?
@LimeStreem kami menghapus beberapa tipe khusus IE dari perpustakaan di 1.5.0-beta. anda bisa menentukan jenis di salah satu file Anda seperti:
interface Map<K, V> {
clear(): void;
delete(key: K): boolean;
forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void;
get(key: K): V;
has(key: K): boolean;
set(key: K, value: V): Map<K, V>;
size: number;
}
declare var Map: {
new <K, V>(): Map<K, V>;
prototype: Map<any, any>;
}
interface Set<T> {
add(value: T): Set<T>;
clear(): void;
delete(value: T): boolean;
forEach(callbackfn: (value: T, index: T, set: Set<T>) => void, thisArg?: any): void;
has(value: T): boolean;
size: number;
}
declare var Set: {
new <T>(): Set<T>;
prototype: Set<any>;
}
Wow, saya menghargai Anda untuk menulis potongan kode ini! :tertawa:
Saya ingin tahu masalah ini akan membantu banyak pengguna TypeScript!
declare class WeakMap< Key , Value > {
delete( key : Key ) : boolean
get( key : Key ) : Value
has( key : Key ) : boolean
set( key : Key , value : Value ) : Map< Key , Value >
}
declare class Map< Key , Value > {
clear(): void
delete( key : Key ) : boolean
forEach< Context = any >( handler : ( this : Context , value : Value , key : Key , map : Map< Key , Value > ) => void , context? : Context ) : void
get( key : Key ) : Value
has( key : Key ) : boolean
set( key : Key , value : Value ) : Map< Key , Value >
size : number
}
declare class Set< Value > {
add( value : Value ) : Set< Value >
clear() : void
delete( value : Value ) : boolean
forEach< Context = any >( handler : ( this : Context , value : Value , key : Value , map : Set< Value > ) => void , context? : Context ) : void
has( value : Value ) : boolean
size : number
}
Komentar yang paling membantu
@LimeStreem kami menghapus beberapa tipe khusus IE dari perpustakaan di 1.5.0-beta. anda bisa menentukan jenis di salah satu file Anda seperti: