Typescript增强/monkey为Konva类修补了一个新属性



我是typescript的新手,很难用Konva库的一个类对引用我的数据模型的新属性"_model"进行猴子补丁。

这个想法是让模型在鼠标交互事件期间可用,并能够根据更改对其进行修改。因此,我尝试使用"_model"属性来增强Konva基元例如文件test.d.ts:

import { Konva } from 'konva';
interface JsonModel {
x: number
y: number
radius: number
}
declare module "konva" {
namespace Konva {
interface Circle {
_model: JsonModel
}
}
}

文件test.ts:

import Konva from "konva";
let circle = new Konva.Circle()
circle._model = {x:100, y:100, radius: 20}    
//     ^^^^^^

我得到了一个编译错误";类型"Circle"上不存在属性"_model";,也许这与命名空间没有正确导入有关,因此属性被添加了错误的类?提前感谢您对此的任何帮助

不是您问题的直接答案。但是,与其做打字魔术,不如把数据写为自定义属性。打字稿会理解它:

import Konva from "konva";
let circle = new Konva.Circle()
circle.setAttr('_model', {x:100, y:100, radius: 20});
circle.getAttr('_model');

最新更新