Typescript中的“通用类型'Feature<T>'需要1个类型参数”是啥意思?

Posted

技术标签:

【中文标题】Typescript中的“通用类型\'Feature<T>\'需要1个类型参数”是啥意思?【英文标题】:What means "Generic type 'Feature<T>' requires 1 type argument(s)" in Typescript?Typescript中的“通用类型'Feature<T>'需要1个类型参数”是什么意思? 【发布时间】:2016-08-16 02:58:57 【问题描述】:

我尝试在 typescript 中使用 GeoJson,但编译器会为这两个变量抛出错误:Generic type 'Feature&lt;T&gt;' 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]
    
  ;

这是什么意思?

【问题讨论】:

试试 > 【参考方案1】:

Feature接口需要一个参数:

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

【讨论】:

抱歉回复晚了,但确实有效。您能否在“试试这个”之后的代码块中添加“属性”:。这种方式无效,缺少“属性”属性。谢谢你!

以上是关于Typescript中的“通用类型'Feature<T>'需要1个类型参数”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

typescript TypeScript中的类型

Typescript 入门手册之函数类型在 TypeScript 中的应用

Typescript 入门手册之函数类型在 TypeScript 中的应用

Typescript入门手册之引用类型在TypeScript中的应用

Typescript入门手册之引用类型在TypeScript中的应用

使用TypeScript中的TypeScript库