Après la mise à jour du compilateur dactylographié de la version 1.4.1 à la version 1.5.0 bêta, le code source inclus dans mon projet est devenu un journal d'erreurs tel que "La carte n'est pas trouvée".
Ainsi, j'ai fait des recherches sur ce problème, et je suis arrivé à une conclusion. Le lib.d.ts ne contient plus les définitions Map et Set, sauf ES6 sélectionné dans tsconfig.json.
En fait, Map and Set est une spécification d'ES6. Il est naturel que nous ne puissions pas utiliser Map and Set dans le projet ciblant ES5 ou inférieur.
Mais nous pourrions utiliser Map and Set même si je sélectionne ES5 comme cible avant le script dactylographié 1.4.1.
Je sais que l'activation de l'utilisation de Map and Set dans le projet conçu pour ES5 comporte des risques.
Parce que certains navigateurs ne prennent pas en charge Map et Set.
Cependant, je pense qu'il est préférable de faire une partie des propriétés de configuration qui permettent de basculer pour utiliser ces définitions ou non. Ne pensez-vous pas?
@LimeStreem, nous avons supprimé certains types spécifiques à IE de la bibliothèque dans la version 1.5.0-beta. vous pouvez simplement définir le type dans l'un de vos fichiers comme :
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, je vous remercie d'écrire cet extrait de code ! :en riant:
Je me demande que ce problème aidera beaucoup d'utilisateurs dactylographiés !
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
}
Commentaire le plus utile
@LimeStreem, nous avons supprimé certains types spécifiques à IE de la bibliothèque dans la version 1.5.0-beta. vous pouvez simplement définir le type dans l'un de vos fichiers comme :