我有以下结构:
project
|- types
|- global.d.ts
|- string.d.ts
|- wdio.d.ts
|- src
|- Models
|- Resources
|- Components
|- Extensions
|- string.ts
|- ...
|- tsconfig.json
|- wdio.conf.js
Run Code Online (Sandbox Code Playgroud)
我尝试用函数扩展字符串的原型。到目前为止我尝试了很多方法,我在几个网站上找到了。但要么tsc给我错误,要么 PHPStorm 显示错误消息。
project
|- types
|- global.d.ts
|- string.d.ts
|- wdio.d.ts
|- src
|- Models
|- Resources
|- Components
|- Extensions
|- string.ts
|- ...
|- tsconfig.json
|- wdio.conf.js
Run Code Online (Sandbox Code Playgroud)
我将类的增强添加String到 d.ts 文件中。然后我在一个单独的文件中定义函数的主体。当我在文件中实现它时src/Extensions/string.ts,该tsc命令没有给出错误消息,但 PHPStorm 显示以下错误:
TS2339: Property 'myCustomFn' does not exist on type 'String'. …
我对这一切都很陌生,我正在尝试将 Node + Typescript 后端添加到我的 Angular 项目中。但是导入express后总是报错。
[ERROR] SyntaxError: Cannot use import statement outside a module.
Run Code Online (Sandbox Code Playgroud)
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"serve": "ts-node-dev server.ts",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"@types/express": "^4.17.11",
"express": "^4.17.1",
"ts-node": "^9.1.1",
"ts-node-dev": "^1.1.6",
"tslint": "^6.1.3",
"typescript": "^4.2.4"
},
}
Run Code Online (Sandbox Code Playgroud)
{
"compilerOptions": {
"target": "ESNEXT",
"module": "commonjs",
"strict": false,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
} …Run Code Online (Sandbox Code Playgroud) 我计划为 socket.io 房间提供工作线程。我在与房间的第一个连接上创建一个工作线程,然后设置 firebase 侦听器。
很遗憾。我在工作文件和我的主要源代码中有常见的导入。
我按照这篇文章允许通过worker_threads运行ts文件 - > https://wanago.io/2019/05/06/node-js-typescript-12-worker-threads/
不幸的是,我没有得到顶级等待,并且在启动工作线程时,出现以下错误。
error TS2451: Cannot redeclare block-scoped variable 'tslib_1'.\r\n"
这是我的 tsconfig.json
{
"compilerOptions": {
"target": "esnext",
"lib": ["esnext"],
"module": "commonjs",
"importHelpers": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
"baseUrl": ".",
"sourceMap": true,
"declaration": false,
"noImplicitAny": false,
},
"files": [
"typings.d.ts"
],
}
Run Code Online (Sandbox Code Playgroud) 我不确定你们中是否有人遇到过同样的问题,但我遇到了ts-node环境变量的问题,非常感谢您的帮助!
我在这里尝试做的基本上只是与index.ts一起运行ts-node。这index.ts只是打印出环境变量之一。
索引.ts:
\nimport "dotenv/config";\n\nconst printEnv = (value: string) => {\n console.log(value);\n};\n\nprintEnv(process.env.PASSWORD);\nRun Code Online (Sandbox Code Playgroud)\n为了使环境变量可以从 中使用index.ts,我创建了env.d.ts一个定义变量类型的变量。
环境.d.ts:
\ndeclare global {\n namespace NodeJS {\n interface ProcessEnv {\n PASSWORD: string;\n }\n }\n}\nexport {}\nRun Code Online (Sandbox Code Playgroud)\n我设置了我的tsconfig.json,package.json和.env文件,如下所示。
tsconfig.json:
\n{\n "name": "ts-env",\n "version": "1.0.0",\n "main": "index.js",\n "license": "MIT",\n "scripts": {\n "start": "nodemon src/index.ts"\n },\n "devDependencies": {\n "@types/node": "^18.6.1",\n "nodemon": "^2.0.19",\n "ts-node": …Run Code Online (Sandbox Code Playgroud) 我正在 Typescript 中创建一个 HTMLInputElement,我打算通过将输入元素的type字段设置为 来将其用作“滑块” "range"。
根据 MDN Web Docs,我可以通过创建 HTMLDatalistElement 的实例、为数据列表提供并通过滑块的字段id引用数据列表来使该滑块更加精美。这不仅会给我的滑块一些刻度线来表示滑块光标当前所在的位置,而且我还可以设置数据列表的 HTMLOptionElement字段来引入带标签的刻度线。idlistlabel
来源:https ://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range#adding_labels
然而,Deno/TS-Node 抱怨这个错误:
error: TS2540 [ERROR]: Cannot assign to 'list' because it is a read-only property.
inputElement.list = datalistId;
Run Code Online (Sandbox Code Playgroud)
谷歌浏览器抱怨这个错误:
Uncaught TypeError: Cannot set property list of #<HTMLInputElement> which has only a getter
Run Code Online (Sandbox Code Playgroud)
由于 MDN Web 文档清楚地表明该字段是要使用的,因此我尝试通过以下方式忽略 Deno/TS-Node 错误来消除它:
// @ts-ignore
Run Code Online (Sandbox Code Playgroud)
该解决方案不起作用,并导致上述 Google Chrome 运行时错误。
我不明白为什么在通过文件构造 HTMLInputElement 时允许设置此字段.html,但在通过 Javascript/Typescript 动态创建 HTMLInputElement 实例时不允许使用它。能够动态设置滑块的刻度线标签会非常好。
如何使用全局包安装通过 ts-node 运行 ts 文件?例如,我有我想发布的打字稿应用程序,并将其用作全局包。
在 package.json 文件中有一个 bin 属性,我们可以在其中指定可执行文件的命令,安装后将设置到 PATH 变量中。
在.js文件的情况下,没有问题。您只需要在 bin 中指定所需的文件。

安装后,脚本会出现,使用我们在 bin 中指定的命令启动我们的应用程序。从截图来看,node.exe 使用了我们的 js。文件作为参数

但是如何对 ts. 填充?我可以使用安装在本地 node_modules 中的 ts-node 运行 ts 文件

但是我不能用 bin 属性来做到这一点。下面的屏幕截图会导致错误。

需要链接到可执行文件。但就其本身而言。没有 ts-node 无法执行。
是否可以在 bin 中指定 ts. 文件需要通过ts-node?或者在没有全局安装ts-node的情况下解决这个问题?
我正在 AWS 上部署一个 dockerized typescript 应用程序。当我运行应用程序容器时,我收到一个 ts-node 错误Error: Cannot find module 'typescript',我不清楚,因为它typescript被定义为 devDependency。这些是我的package.json依赖项
{
"name": "app-server",
"version": "0.0.0",
"description": "description",
"author": "Marcello Bardus",
"license": "MIT",
"scripts": {
"build": "tsc -p tsconfig.build.json",
"format": "prettier --write \"src/**/*.ts\"",
"start": "ts-node -r tsconfig-paths/register src/main.ts",
"start:dev": "nodemon",
"start:debug": "nodemon --config nodemon-debug.json",
"prestart:prod": "rimraf dist && tsc",
"start:prod": "node dist/main.js",
"lint": "tslint -p tsconfig.json -c tslint.json",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r …Run Code Online (Sandbox Code Playgroud) 我有以下项目结构
|_typetests
| |_type.test.ts
|
|
myproj.d.ts
tsconfig.json
Run Code Online (Sandbox Code Playgroud)
我的 tsconfig.json 看起来像这样:
{
"compilerOptions": {
"module": "commonjs",
"moduleResolution": "node",
"lib": [
"es6"
],
"target": "es6",
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"types": [
"node",
"mocha"
],
"noEmit": true,
"forceConsistentCasingInFileNames": true,
"baseUrl": "./"
},
"include": [
"types/*.test.ts"
],
"exclude": ["node_modules"]
}
Run Code Online (Sandbox Code Playgroud)
如果我跑 ./node_modules/.bin/tsc -p . --traceResolution
然后我可以看到:
模块名称“myproj”已成功解析为“/Users/paulcowan/projects/myproj/myproj.d.ts”。========
但是当我通过 mocha 运行以下内容时
./node_modules/.bin/mocha -r ts-node/register types/*.test.ts
Run Code Online (Sandbox Code Playgroud)
Error: Cannot find module 'myproj'
目前我们有客户端服务器应用程序(用于竞争编码目的),客户端点击编译和运行并将 ts 代码发送到服务器,其中 ts 代码存储在一个文件中,并在服务器上使用测试用例在本地运行,并通过测试用例将输出返回给客户端通过/结果失败。但是运行 ts 文件非常慢,而且这需要很多时间。
我在 transpileonly 模式下使用 ts-node 在服务器中本地编译和运行文件。
例如。npx ts-node -T tsFileName.ts
我们的要求是针对 ts 代码的编译和运行时间。
我正在玩 TS 并在尝试为我的代码运行测试时遇到错误。我有以下一段代码:
return this._map.get(y)?.get(x)
Run Code Online (Sandbox Code Playgroud)
当我运行浏览器的代码时,一切正常。mocha但是,当我使用 运行测试时,它会引发错误:
return this._map.get(y)?.get(x);
^
SyntaxError: Unexpected token .
Run Code Online (Sandbox Code Playgroud)
从我设法阅读的内容来看,我应该tsc为 NodeJS 环境进行不同的配置以使其正常工作,但我的印象是它更多地是关于模块解析而不是语法。是不是我需要升级到任何特定的 NodeJS 版本?我已经尝试过 Node 10 到 13,但都没有奏效。我错过了什么?
ts-node ×10
typescript ×10
javascript ×3
mocha.js ×2
node.js ×2
deno ×1
docker ×1
express ×1
html ×1
nestjs ×1
package.json ×1
performance ×1
webdriver-io ×1