Angular 如何忽略类型脚本错误TS2339-类型上不存在属性
我正在使用Angular 8(在Visual Studio 2019中启动了一个项目),并且具有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; ....
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或查看以下内容