angular - TypeScript Path2D-klass saknar en strängkonstruktor


Jag försöker skapa ett Path2D-objekt från en SVG-strängväg. Enligt Path 2D-dokumentationen från Mozilla är det möjligt att skicka en strängväg som parameter, men när jag försöker det i min kod visar Webstorm IDE detta fel:

TS2345: Argument of type "" is not assignable to parameter of type 'Path2D'

Koden jag försöker köra är:

let p = new Path2D('M10 10 h 80 v 80 h -80 Z');

Jag har upptäckt att lib.d.ts, där Path2D är deklarerad, inte har en strängkonstruktör för Path2D-klassen.

Hur kan jag lösa detta problem? Jag använder Typescript 2.2.1

Svar #1

Det finns en öppen bugg Path2D saknar strängkonstruktor

Wokraround är att skapa dina egna typer

interface Path2DConstructor {
  new (): Path2D;
  new (d: string): Path2D;
  new (path: Path2D): Path2D;
  prototype: Path2D;
}
declare var Path2D: Path2DConstructor;

var p = new Path2D('M10 10 h 80 v 80 h -80 Z');
ctx.fill(p);

Se även

  • Att använda Path2D i ett TypeScript-projekt är inte löst