typescript - 已定义类属性,但报告“类型 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 编译器会给出错误?
解决方案
只是猜测,但我认为您的导入语句import { Vector3 } from './engine';
可能是错误的。类名Vector3
非常流行,您的 IDE 可能刚刚导入了错误的类实现。