javascript - 转译代码时,TypeScript 的接口参数不起作用
问题描述
我在一个名为 get() 的类中有一个方法
import optionsInst from "./options";
get(url, opt: optionsInst){}
optionsInst 是另一个文件的接口
export interface Options {
tipoRespuesta?: "json" | "arrayBuffer";
params?: string;
data?: string;
headers?: HeadersInit;
}
export default Options;
我的 tsconfig 是:
{
"compilerOptions": {
"target": "es6",
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"outDir": "./dist",
"module": "CommonJS",
"declaration": true,
"allowJs": true
},
"exclude": ["node_modules"]
}
为了进行转译,我使用npm run build
并生成了一个 dist 文件夹。为了测试它,我创建一个新文件并运行npm test.js
var CL = require("../dist/index.js");
let instancia = new CL("https://reqres.in/api/");
instancia.get("users").then(console.log);
错误是这样的:
if (utils.isEmpty(opt.headers)) {
^
TypeError: Cannot read property 'headers' of undefined
解决方案
如果以下行在get(url, opts: optionsInst)
类中的方法内
if (utils.isEmpty(opt.headers)) {
那么你的问题是你在没有定义 ops 参数的情况下调用它,这里:
instancia.get("users").then(console.log);
该错误只是说它无法读取该属性opt.headers
,因为opt
is undefined
。
实际上,您应该在上面的那一行中收到 Typescript 错误,告诉您opts
调用中缺少参数 - 检查一下。但是 Typescript 仍然会编译代码,只是在你运行它时导致运行时错误——显然 Typescript 试图帮助你避免的事情!
推荐阅读
- c# - 表单关闭后未处理
- xcode - 这就是xcode的新特性,详情请看图
- java - 输入流在 Spring 到达 ASPECT 之前关闭
- php - 在 PHP 中多次运行相同代码的最佳方法是什么?
- linux - check_snmp_mem.pl 中的内存使用值是如何得出的?
- c# - 对话框的设计
- r - 在 R 中具有比例的逻辑回归(因变量不是二元的)。R在做什么?
- python - 使用 Python 将 Microsoft Word 文档转换为 PDF
- android - 是否可以在 Activity 类中测试方法?
- javascript - 在jqgrid的隐藏字段中添加formoptions in (colspos and rowspos)