typescript 类型提示上不存在属性组件

n53p2ov0  于 2022-11-18  发布在  TypeScript
关注(0)|答案(1)|浏览(421)

我的问题是我不知道如何解决这个问题。我在这个网站上看过其他类似的问题,没有一个有用的。我有这个d.ts:

declare module prompto {

    export type PromptoOptions = {
        showPreview: boolean,
        fileName: string,
        outputPath: string,
        components: QOptions[]
    }

    export type QOptions = {
        name: string,
        type: number
    }

    export class Prompto {
        public addComponents(data: Array<QOptions>): void;
        public run(): void;
        public showPreview: boolean;
        public outputPath: string;
        public fileName: string;
        public components: QOptions[];
    }
}

这是一个类:

import PromptoOptions = prompto.PromptoOptions;
import { run } from "../functions/run";
import QOptions = prompto.QOptions;

export class Prompto extends prompto.Prompto {
    constructor(options: PromptoOptions = {
        showPreview: false,
        outputPath: "./",
        fileName: "output",
        components: []
    }) {
        super();
        this.showPreview = options.showPreview
        this.fileName = options.fileName
        this.outputPath = options.outputPath

        this.components = [];
    }

    addComponents(arr: Array<QOptions>) {
        for (const item of arr) {
            if (!item.name || !item.type) {
                throw new TypeError("Invalid item")
            }
            this.components.push(item)
        }
    }

    run() {
        console.log(this)
        run({ components: this.components })
    }
}

和完整错误:

src/structures/prompto.ts:17:14 - error TS2551: Property 'components' does not exist on type 'Prompto'. Did you mean 'addComponents'?

17         this.components = [];
                ~~~~~~~~~~

  src/structures/prompto.ts:20:5
    20     addComponents(arr: Array<QOptions>) {
           ~~~~~~~~~~~~~
    'addComponents' is declared here.

我只想解决这个问题。我已经试着解决这个问题7个小时了。无论我问谁都不帮忙。只是请。

bkhjykvo

bkhjykvo1#

我在TS游戏场上玩过这个,我认为 a 修复将是在构造函数之前添加public components: QOptions[];行。如果你愿意,可以使用不同的访问修饰符(privateprotected)。
然而,我也要说,我从来没有见过将import=一起使用的语法,老实说,我不知道这可能会对代码产生什么影响。
为了解决这个问题,我个人会删除这些导入,并在.ts文件中手动写入我希望使用的类型,以检查类是否按照我希望的方式运行。然后,我会删除这些类型并导入它们,以检查导入是否按照我希望的方式运行。

相关问题