Аргумент интерфейса TypeScript не работает, когда код передается - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть метод внутри класса с именем 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

1 Ответ

0 голосов
/ 19 февраля 2020

Если следующая строка находится внутри метода get(url, opts: optionsInst) в классе

if (utils.isEmpty(opt.headers)) {

Тогда ваша проблема в том, что вы вызываете его без определенного аргумента ops, здесь:

instancia.get("users").then(console.log);

Ошибка просто говорит о том, что он не может прочитать свойство opt.headers, потому что opt равно undefined.

На самом деле вы должны получить ошибку Typescript для этой строки выше, сообщая вам, что в вызове отсутствует аргумент opts - проверьте это. Но Typescript все равно скомпилирует код, что приведет к ошибке времени выполнения при его запуске - очевидно, именно то, что Typescript пытается помочь вам избежать!

...