0

我仍然迷失在试图指定某种类型的数据属性的 Vue (3) + Typescript 中。我添加了一个.d.ts文件,但无济于事。我正在尝试这个:

import Modeler from 'bpmn-js/lib/Modeler'
...
data() {
    return {
        modeler: {} as InstanceType<typeof Modeler> // ?????
    },
}
...
methods: {
    do() {
        this.modeler.importXML(someXML)
    },
}
...

这导致:

'get' on proxy: property '$pkg' is a read-only and non-configurable data property on the proxy target but the proxy did not return its actual value (expected '#<Object>' but got '[object Object]')

如果我 在事情中定义Modeler实例就可以了:methods

methods: {
    do() {
        const modeler = new Modeler({container: '#modeler'})
        modeler.importXML(someXML)
    },
}

我已将模块声明为bpmnjs.d.ts

// bpmnjs.d.ts
declare module 'bpmn-js/lib/Modeler'

知道我在这里做错了什么吗?

4

1 回答 1

1

终于让它工作了:

data() {
    return {
        modeler: markRaw({} as InstanceType<typeof Modeler>)
    }
}
...
mounted() {
    this.modeler = markRaw(new Modeler({container: '#modeler'}))
}
于 2020-11-04T16:48:30.860 回答