angular - Hur man åtgärdar skrivfel i JavaScript-bibliotek?


Jag använder Leaflet-biblioteket (http://leafletjs.com) i ett TypeScript-projekt.

Jag visar en markör på kartan som är konfigurerad med alternativ: http://leafletjs.com/reference-1.3.0.html#marker-l-marker

Jag försöker använda det här biblioteket i mitt projekt: https://github.com/bbecquet/Leaflet.RotatedMarker

Jag försöker lägga till fler alternativ till det andra argumentet i Marker men jag får TypeScript-fel:

ERROR in src/app/app.component.ts(61,7): error TS2345: Argument of type '{ rotationAngle: number; }' is not assignable to parameter of type 'MarkerOptions'.
  Object literal may only specify known properties, and 'rotationAngle' does not exist in type 'MarkerOptions'

Jag försöker skapa ett typings-script eller en fil för att låta mig göra det.

/// <reference types="leaflet" />

declare module L {
  export interface MarkerOptions { 
    rotationAngle: number;
    rotationOrigin: string;
  }
}

Kan vara något liknande detta: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/leaflet/index.d.ts#L1470

Vad saknar jag för att få detta att fungera?

Hur man skapar egna typdefinitioner för JavaScript-kod eller tredjepartsbibliotek som inte tillhandahåller typdefinitioner direkt?

Här är ett MCVE: https://github.com/badis/typescript-stackoverflow-question

Svar #1

Du måste installera typer:

@types/leaflet-rotatedmarker

Inkludera också biblioteken i din komponent:

import L from 'leaflet';
import 'leaflet-rotatedmarker';

Här är ett fungerande projekt utan stavfel:

https://stackblitz.com/edit/angular-bee8jg