Typescript: Map,Set... dans la cible ES5

Créé le 28 mai 2015  ·  3Commentaires  ·  Source: microsoft/TypeScript

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?

Question

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 :

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>;
}

Tous les 3 commentaires

@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
}
Cette page vous a été utile?
0 / 5 - 0 notes