Angular 如何忽略类型脚本错误TS2339-类型上不存在属性

Angular 如何忽略类型脚本错误TS2339-类型上不存在属性,angular,typescript,fabricjs,Angular,Typescript,Fabricjs,我正在使用Angular 8(在Visual Studio 2019中启动了一个项目),并且具有fabric.init.ts文件和下一个内容: import 'fabric'; import * as fabric from 'fabric/fabric-impl'; // (TS) Property 'DPI' does not exist on type 'typeof import(..@types/fabric/fabric-impl)' fabric.DPI = 213; ....

我正在使用Angular 8(在Visual Studio 2019中启动了一个项目),并且具有
fabric.init.ts
文件和下一个内容:

import 'fabric';
import * as fabric from 'fabric/fabric-impl';

// (TS) Property 'DPI' does not exist on type 'typeof import(..@types/fabric/fabric-impl)'
fabric.DPI = 213;
....
Next是ok,因为它与d.ts定义匹配:

// Override fabric to meet ourrequirements
fabric.util.object.extend(fabric.Object.prototype, {
  centeredRotation: true,
如何忽略
DPI
TS2339错误。如果有自动完成功能,特别是对于学习织物,那就太好了。

My package.json:

"private": true,
"dependencies": {
  "@angular/core": "8.2.14",
  ....
  "@angular/router": "8.2.14",
  "@types/fabric": "3.5.1",
  "fabric": "3.5.1",
  ...
},
编辑

目前,我通过添加以下行解决了此问题:

// @ts-ignore
fabric.DPI = 213;
我知道这不是最好的解决方案,我更喜欢@wentjun的解决方案

通过更改此选项:
import*作为“fabric/fabric impl”中的fabric从“结构”导入{fabric}我现在也启用了VisualStudio intellisense。当然,我在package.json中添加了@types/fabricjs


例如,像这样的
(任何结构)。DPI=213

任何一种类型都可以将其强制转换为any,然后Typescript将像Vugar建议的那样忽略它,或者


导入

我不熟悉结构,但建议这样做的方法是扩展
结构
命名空间以接受DPI作为有效属性

首先,您可以创建一个typescript文件并定义新的结构定义

custom-fabric.ts:

interface ExtendedFabric {
  DPI: number;
}

// apply additional types to fabric and export it for usage
export const CustomFabric: (ExtendedFabric & typeof fabric) = fabric as any;
在使用它的类/组件中

import { CustomFabric } from './custom-fabric';

CustomFabric.DPI = 213; // no TS errors

问题是因为结构定义文件没有结构javascript文件的所有内容。请尝试使用fabricjs 1.5或查看以下内容