代码之家  ›  专栏  ›  技术社区  ›  Runtime Terror

TypeScript中<P=any>的含义

  •  2
  • Runtime Terror  · 技术社区  · 7 年前

    我看了看 leaflet.js 在定义文件中,我发现了一件奇怪的事情: Marker<P = any> 我想不出是什么 P = any 用于。我是说为什么不是 P: any ?

    类实现:

    export class Marker<P = any> extends Layer {
        constructor(latlng: LatLngExpression, options?: MarkerOptions);
        toGeoJSON(): geojson.Feature<geojson.Point, P>;
        getLatLng(): LatLng;
        setLatLng(latlng: LatLngExpression): this;
        setZIndexOffset(offset: number): this;
        setIcon(icon: Icon | DivIcon): this;
        setOpacity(opacity: number): this;
        getElement(): HTMLElement | undefined;
    
        // Properties
        options: MarkerOptions;
        dragging?: Handler;
        feature?: geojson.Feature<geojson.Point, P>;
    }
    

    完整定义文件: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/leaflet/index.d.ts

    1 回复  |  直到 7 年前
        1
  •  4
  •   Titian Cernicova-Dragomir    7 年前

    Marker 是泛型类型,具有名为 P 。通常必须为泛型类型指定泛型参数。但是,如果泛型类型的定义为类型参数提供了默认值( P = any )然后可以在省略显式类型参数的同时使用该类型:

    let x: Marker // valid because there is a default of any for P will be the same as Marker<any>
    let xy: Marker<number> // valid because Marker is generic