web-dev-qa-db-ja.com

Typescriptで「ジェネリック型 'Feature <T>'には1つの型引数が必要」とはどういう意味ですか?

TypeScriptでGeoJsonを使用しようとしましたが、コンパイラーは次の2つの変数に対してエラーをスローします:Generic type 'Feature<T>' requires 1 type argument(s)

  const pos = <GeoJSON.Feature>{
    "type": "Feature",
    "geometry": {
      "type": "Point",
      "coordinates": [0, 1]
    }
  };

  const oldPos = <GeoJSON.Feature>{
    "type": "Feature",
    "geometry": {
      "type": "Point",
      "coordinates": [2, 4]
    }
  };

これはどういう意味ですか?

8
dagatsoin

機能インターフェースにはパラメーターが必要です。

export interface Feature<T extends GeometryObject> extends GeoJsonObject
{
    geometry: T;
    properties: any;
    id?: string;
}

これを試して:

  const pos = <GeoJSON.Feature<GeoJSON.GeometryObject>>{
    "type": "Feature",
    "properties":{},
    "geometry": {
      "type": "Point",
      "coordinates": [0, 1]
    }
  };

また、ヘルパータイプを導入し、キャストする代わりにposにタイプを設定すると、必要な「プロパティ」属性を確実に設定するのに役立ちます。

type GeoGeom = GeoJSON.Feature<GeoJSON.GeometryObject>;
const pos: GeoGeom = {
    type: "Feature",
    properties: "foo",
    geometry: {
        type: "Point",
        coordinates: [0, 1]
    }
};
3
Corey Alix