【发布时间】:2023-04-09 06:20:02
【问题描述】:
我对 node.js 和 typescript 很陌生。我正在尝试通过从 python 移植现有应用程序来学习。我在意料之外的地方遇到了语法错误。
我有一个类是项目的主力。它在一个名为myClass.ts的文件中
myProject
└── js
├── commands
│ └── rules.js
├── myClass.ts
└── main.js
rules.js 包括 myClass 为:
try {
const {myClass} = require("../myClass.ts")
} catch(e) {
console.log(e)
}
我正在使用 PyCharm 并且可以在 catch 块中放置一个断点。错误指向类中的构造函数。错误是:
/home/me/PycharmProjects/myProject/js/myClass.ts:44
rule_type: string,
^
SyntaxError: Unexpected token ':'
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1031:15)
at Module._compile (node:internal/modules/cjs/loader:1065:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (/home/me/PycharmProjects/myProject/js/commands/rules.js:4:19)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
myClass 太大,放不下。它开始了:
const {randomInt} = require('crypto')
class myClass {
constructor(
rule_type: string,
display_type: string,
range_min: number = 1,
range_max: number = 10000,
display_mapping: {} = undefined,
value_adjustments: {} = undefined,
) {
this.rule_type = die_type
this.display_type = display_type
this.range_min = Math.trunc(range_min)
this.range_max = Math.trunc(range_max)
this.display_mapping = display_mapping
this.value_adjustments = value_adjustments
}
...//a bunch of methods, etc
}
exports.myClass = myClass;
如果我去掉: string 类型提示,那么错误就会下降到下一个类型提示。以这种方式混合 javascript 和 typescript 有问题吗?
我为什么要混合js和ts?我找到了一个示例节点项目,这似乎是我想做的一个合理的起点。我认为为这门课尝试打字稿可能是一个很好的练习。
** 编辑 **
谢谢大家。很多东西要学...
【问题讨论】:
-
我可以看到,您的错误来自 node.js。但是 node.js 当然只懂 Javascript,TypeScript 必须先转译。
-
您是否在您的
tsconfig中启用了"allowJs": true? -
Typescript 是 Javascript 的超集。这意味着 Typescript 可以很好地理解 javascript,但是 Javascript 会认为 Typescript 代码充满了语法错误。需要将项目配置为使用 typescript,以便在 node 或浏览器中运行之前将 typescript 代码编译为 Javascript。
标签: javascript node.js typescript