typescript - 打字稿如何使用包中的类型
问题描述
我创建了一个定义了类型的 NPM 包(包括使用):
(SolarEdge.js)
export type Period = 'DAY' | 'QUARTER_OF_AN_HOUR' | 'MONTH' | 'HOUR' | 'WEEK' | 'MONTH' | 'YEAR';
public getData = async (site: number, start: string, end: string, period: Period) => {}
(index.js)
export { default } from './SolarEdge';
从 ts 编译后,我得到 4 个文件(index.js、index.d.ts、SolarEdge.js、SolarEdge.d.ts)
从我的快速应用程序中使用它时,它抱怨我无法将字符串传递给这个函数,因为它需要一个句点。
错误:'string' 类型的参数不可分配给'Period'.ts(2345) 类型的参数
代码:
const data = await solaredge.getData(
parseInt(req.params.site),
req.params.start,
req.params.end,
//'MONTH',
req.params.period,
);
req.params.period
包含带有“MONTH”或其他内容的字符串。当使用硬编码字符串 MONTH 时,它可以工作,但使用 req.params.period 变量时,它不会。
我试过做:req.params.period as Period
但问题是:它找不到句号。
这是如何运作的?
解决方案
想要支持 TypeScript 使用者的 TypeScript 库必须在编译期间显式导出其类型并发出声明文件。
看起来您已经在这样做了,因此您应该能够显式导入Period
类型以在应用程序代码中使用:
import { getData, Period } from 'solaredge'
...
const data = await solaredge.getData(
parseInt(req.params.site),
req.params.start,
req.params.end,
//'MONTH',
req.params.period as Period,
);
推荐阅读
- sql - PL/SQL: ORA-00904: 无效标识符 &PL/SQL: 语句被忽略&PLS-00364: 循环索引变量使用无效
- spring-boot - 未为参数对象调用 Spring Boot 异常处理程序
- c++ - 花括号初始化程序后的向量 push_back 在 C++ 中不起作用
- mysql - 由于 SSL 问题,无法通过 docker-compose 将 Keycloak 连接到 MySQL
- c# - 我想用方形网格统一绘制游戏板,我是初学者
- python - training.test.split 返回空的训练集
- python - 在 Python 中使用 InfluxDB 差分函数
- apache-spark - 缓存 pyspark 数据帧不会导致性能提升
- c++ - 错误:字符串之前的预期主表达式
- c++ - 如何在 C++ 中使用 unsigned char 数组创建 streambuf