@deckgl-fiber-renderer/types

中文文档
2.0.1发布于 2026/05/26MITTypeScriptES Module零依赖近 30 天下载 3.6万

Auto-included with @deckgl-fiber-renderer/dom. No separate installation needed.

原始使用文档
文档目录11 节
  1. Installation
  2. How-To: Type-Safe Accessor Functions
  3. How-To: Type Custom Layers (Optional)
  4. Reference: JSX Element Types
  5. <layer> Element
  6. <view> Element
  7. Deprecated Layer Elements
  8. TypeScript Configuration
  9. Required Compiler Options
  10. Recommended Options
  11. Related Packages

@deckgl-fiber-renderer/types

Auto-included with @deckgl-fiber-renderer/dom. No separate installation needed.

TypeScript definitions for deck.gl JSX elements. Provides type-safe layer creation with generic type parameters and IntelliSense.

Installation

pnpm add @deckgl-fiber-renderer/types

Automatically installed with @deckgl-fiber-renderer/dom. Only install directly if using the reconciler standalone.


How-To: Type-Safe Accessor Functions

Problem: Accessor function parameters typed as any - no autocomplete, no type safety.

<layer
  layer={
    new ScatterplotLayer({
      id: "points",
      data: myData,
      getPosition: (d) => d.coordinates, // d is 'any'
      getRadius: (d) => d.value, // d is 'any'
    })
  }
/>

Solution: Pass data type as generic parameter.

type DataPoint = {
  coordinates: [number, number];
  value: number;
  color: [number, number, number];
};

<layer
  layer={
    new ScatterplotLayer<DataPoint>({
      id: "points",
      data: myData,
      getPosition: (d) => d.coordinates, // d is DataPoint ✅
      getRadius: (d) => d.value, // Full autocomplete ✅
      getFillColor: (d) => d.color, // Type errors on typos ✅
    })
  }
/>;

Benefits:

  • IntelliSense shows available properties
  • TypeScript catches typos and type mismatches
  • Rename refactors work across accessor functions
  • Types serve as inline documentation

How-To: Type Custom Layers (Optional)

Custom layers work with <layer> without type declarations. Extend IntrinsicElements only if you want a dedicated JSX element.

Recommended approach (no declaration):

import { CompositeLayer } from "@deck.gl/core";

class CustomLayer extends CompositeLayer<{ customRadius: number }> {
  renderLayers() {
    return new ScatterplotLayer({
      id: `${this.props.id}-scatter`,
      data: this.props.data,
      getRadius: this.props.customRadius,
    });
  }
}

// Just works
<layer layer={new CustomLayer({ id: "custom", data, customRadius: 200 })} />;

Alternative approach (custom element):

type CustomLayerProps = {
  id: string;
  data: unknown[];
  customRadius: number;
};

declare global {
  namespace React.JSX {
    interface IntrinsicElements {
      customLayer: CustomLayerProps;
    }
  }
}

// Now type-checked (but <layer> is recommended)
<customLayer id="custom" data={data} customRadius={200} />;

Reference: JSX Element Types

<layer> Element

Universal layer element accepts any deck.gl Layer instance.

import { ScatterplotLayer, PathLayer } from "@deck.gl/layers";

<layer layer={new ScatterplotLayer({ id: "points", data })} />;
<layer layer={new PathLayer({ id: "paths", data })} />;

Type definition:

interface IntrinsicElements {
  layer: {
    layer: Layer;
    key?: string;
    ref?: React.Ref<Layer>;
  };
}

<view> Element

Universal view element accepts any deck.gl View instance.

import { MapView, OrthographicView } from "@deck.gl/core";

<view view={new MapView({ id: "main" })} />;
<view view={new OrthographicView({ id: "minimap" })} />;

Type definition:

interface IntrinsicElements {
  view: {
    view: View;
    key?: string;
    ref?: React.Ref<View>;
  };
}

Deprecated Layer Elements

Layer-specific elements (v1 syntax) are still typed but marked @deprecated:

interface IntrinsicElements {
  /** @deprecated Use <layer layer={new ScatterplotLayer(...)} /> instead */
  scatterplotLayer: ScatterplotLayerProps;

  /** @deprecated Use <layer layer={new PathLayer(...)} /> instead */
  pathLayer: PathLayerProps;

  // ... other deprecated elements
}

TypeScript shows deprecation warnings when using these elements.


TypeScript Configuration

Required Compiler Options

{
  "compilerOptions": {
    "jsx": "react-jsx",
    "moduleResolution": "bundler",
    "types": ["@deckgl-fiber-renderer/types"]
  }
}

For best experience:

{
  "compilerOptions": {
    "strict": true,
    "noUncheckedIndexedAccess": true,
    "exactOptionalPropertyTypes": true
  }
}

These catch more type errors and improve accessor function types.


版本与发布记录

@deckgl-fiber-renderer/types 共发布 8 个版本,首次发布于 2025/03/14;过去 12 个月发布了 2 个版本。

版本发布日期距今
2.0.1latest2026/05/265 个月前
2.0.02026/04/226 个月前
1.4.02025/05/091.5 年前
1.3.02025/03/191.6 年前
1.2.02025/03/181.7 年前
1.1.12025/03/181.7 年前

关于 @deckgl-fiber-renderer/types 的常见问题

@deckgl-fiber-renderer/types 是什么?

Auto-included with @deckgl-fiber-renderer/dom. No separate installation needed.

如何安装 @deckgl-fiber-renderer/types?

在项目目录运行 npm install @deckgl-fiber-renderer/types,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@deck.gl/core(>=9.1)、@deck.gl/geo-layers(>=9.1)、@deck.gl/layers(>=9.1)、@deck.gl/mapbox(>=9.1)、@deck.gl/mesh-layers(>=9.1)、@types/react(^19)、@types/react-dom(^19)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@deckgl-fiber-renderer/types 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@deckgl-fiber-renderer/types 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@deckgl-fiber-renderer/types 可以商用吗?

@deckgl-fiber-renderer/types 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@deckgl-fiber-renderer/types 的下载量有多少?

根据 npm 官方下载统计,@deckgl-fiber-renderer/types 在 2026/10/12 – 2026/11/10 这 30 天内被下载 36,067 次,日均约 1,202 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@deckgl-fiber-renderer/types 还在维护吗?

最新版本 2.0.1 发布于 2026/05/26(5 个月前);至今共发布 8 个版本,其中过去 12 个月发布了 2 个;首次发布于 2025/03/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。