首页 > 解决方案 > 已定义类属性,但报告“类型 xxx 上不存在属性”

问题描述

我用 TypeScript 做了一个类:

export class Vector3 {
    x: number;
    y: number;
    z: number;

    constructor(x, y, z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }
}

然后创建一个 Vector3 类的实例:

import { Vector3 } from './engine';
var myVector: Vector3 = new Vector3(1, 2, 3);

但是当我编译脚本时,它说:

TSError: ⨯ Unable to compile TypeScript:
src/engine.ts:5:14 - error TS2339: Property 'x' does not exist on type 'Vector3'.

5         this.x = x;
               ~
src/engine.ts:6:14 - error TS2339: Property 'y' does not exist on type 'Vector3'.

6         this.y = y;
               ~
src/engine.ts:7:14 - error TS2339: Property 'z' does not exist on type 'Vector3'.

7         this.z = z;
               ~

    at createTSError (/Users/rico345100/Desktop/development/test/node_modules/ts-node/src/index.ts:421:12)
    at reportTSError (/Users/rico345100/Desktop/development/test/node_modules/ts-node/src/index.ts:425:19)
    at getOutput (/Users/rico345100/Desktop/development/test/node_modules/ts-node/src/index.ts:530:36)
    at Object.compile (/Users/rico345100/Desktop/development/test/node_modules/ts-node/src/index.ts:735:32)
    at Module.m._compile (/Users/rico345100/Desktop/development/test/node_modules/ts-node/src/index.ts:814:43)
    at Module.m._compile (/Users/rico345100/Desktop/development/test/node_modules/ts-node/src/index.ts:814:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at require.extensions.<computed> (/Users/rico345100/Desktop/development/test/node_modules/ts-node/src/index.ts:817:12)
    at Object.require.extensions.<computed> [as .ts] (/Users/rico345100/Desktop/development/test/node_modules/ts-node/src/index.ts:817:12)
    at Module.load (internal/modules/cjs/loader.js:811:32)

我不知道为什么会这样。我可以清楚地看到 Vector3 类定义中有 x/y/z,但是为什么 ts 编译器会给出错误?

标签: typescript

解决方案


只是猜测,但我认为您的导入语句import { Vector3 } from './engine';可能是错误的。类名Vector3非常流行,您的 IDE 可能刚刚导入了错误的类实现。


推荐阅读