TS2339: A propriedade não existe no tipo
Estou convertendo um arquivo js para ts no WebStorm 2016.2.2.
Eu tinha o seguinte trecho:
///<reference path="./typings/globals/node/index.d.ts" />
global.base_dir = __dirname;
global.abs_path = function(path) {
return global.base_dir + path;
};
global.include = function(file) {
return require(global.abs_path('/' + file));
};
base_dir
, abs_path
einclude
produziu os erros:
TS2339: A propriedade 'base_dir' não existe no tipo 'Global'
TS2339: A propriedade 'abs_path' não existe no tipo 'Global'
TS2339: A propriedade 'include' não existe no tipo 'Global'
Então, eu os adicionei à interface 'Global' da seguinte maneira:
///<reference path="./typings/globals/node/index.d.ts" />
declare namespace NodeJS{
interface Global {
base_dir: string;
abs_path: (path: string) => string;
include: (file: string) => string;
}
}
global.base_dir = __dirname;
global.abs_path = function(path) {
return global.base_dir + path;
};
global.include = function(file) {
return require(global.abs_path('/' + file));
};
Eliminou esses erros.
Então, continuei convertendo o restante do arquivo, tive que importar os doisRequest
eResponse
do express, então adicionei o seguinte:
///<reference path="./typings/modules/express/index.d.ts" />
import {Request, Response} from "~express/lib/express";
Então agora o trecho inteiro é assim:
///<reference path="./typings/globals/node/index.d.ts" />
///<reference path="./typings/modules/express/index.d.ts" />
import {Request, Response} from "~express/lib/express";
declare namespace NodeJS{
interface Global {
base_dir: string;
abs_path: (path: string) => string;
include: (file: string) => string;
}
}
global.base_dir = __dirname;
global.abs_path = function(path) {
return global.base_dir + path;
};
global.include = function(file) {
return require(global.abs_path('/' + file));
};
Infelizmente, adicionar oimport
A instrução retornou o erro TS2339, por isso fiquei novamente com:
TS2339: A propriedade 'base_dir' não existe no tipo 'Global'
TS2339: A propriedade 'abs_path' não existe no tipo 'Global'
TS2339: A propriedade 'include' não existe no tipo 'Global'
O BTW Express não tem nada a ver com esse erro especificamente. Eu tentei importar de outros módulos e produziu o mesmo erro. Ocorre quando tenho pelo menos umimport
declaração
Alguém sabe como posso corrigir isso?
Qualquer ajuda será profundamente apreciada!