node.js - JSZip 使用打字稿在 node.js 中产生 TS2322 错误
问题描述
添加导入语句后:
import JSZip from 'jszip';
构建会产生错误:
TS2322: Type 'string | undefined' is not assignable to type 'string'.
Type 'undefined' is not assignable to type 'string'.
对于这些代码行:
const env: string = process.env.NODE_ENV;
...
private timeoutTime: number = process.env.VUE_APP_TIME_OUT;
...
node.js 版本:14.16.1
jszip版本:3.7.1
打字稿:3.9.4
删除 JSZip 的导入,错误就消失了。有多个相同错误的实例 - 但并非在使用 process.env 的所有情况下。不知道如何解决这个问题。
解决方案
中的属性process.env
有一个类型string | undefined
,您有两个选择
第一的
将他们的道具投射到你想要的类型
const env = process.env.NODE_ENV as string;
第二
types.d.ts
在 yow package.json创建一个文件调用添加一个 prop 调用types
并将路径设置为 yow 新文件types.d.ts
{
....
"types":"./types.d.ts",
....
}
在 yow tsconfig.json 中有一个 prop calltypeRoots
假设 yow"baseUrl": "./node_modules"
你看起来typesRoots
像:
//tsconfig.json
{
"baseUrl": "./node_modules",
"typeRoots": [
"../types.d.ts",
]
}
将此添加到新文件中
/// <reference types="node" />
declare namespace NodeJS {
interface ProcessEnv {
readonly NODE_ENV: "development" | "production" | "test";
readonly PUBLIC_URL: string;
readonly PORT: string;
}
}
现在添加所有 yow vars 所有你在那里设置的 vars 将有一个类型字符串
推荐阅读
- java - Spring boot(JAVA)和线程池是如何工作的?
- java - 除非池是无限的,否则提交依赖于其他任务的任务有死锁的风险
- java - 用于远程分区的多步 Spring Cloud Task (PartitionHandler) 的 Spring Batch
- excel - 比较两张纸。所有列?
- terraform - Terraform Openstack 无法检索提供程序的可用版本列表
- xamarin - 按下后退按钮未触发
- excel - 在 Excel 中,如何根据另一张表的内容自动填充多列中的值?
- python - 机器人在提及以及当有人回复机器人消息时做出响应
- hard-drive - 是否可以访问 pata 驱动器(驱动器 0 和驱动器 1)中的所有寄存器?
- python - 使用通配符过滤模型对象