I have the following TypeScript declaration for an npm package named foo which (let just assume for the sake of this example) does not have a declaration file anywhere that I can pull.
declare module "foo" {
export function getPerpetualEnergy(): any[];
export function endWorldHunger(n: boolean): void;
}
I have placed that declaration inside ./typings/foo.d.ts file and updated my typeRoots folders to below (inside ./tsconfig.json file):
{
"compilerOptions": {
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es5",
"jsx": "react",
"strictNullChecks": true,
"moduleResolution": "node",
"typeRoots": [
"./typings/",
"./node_modules/@types/"
]
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.test.ts"
]
}
and I have tried to use it from a .ts like below:
import * as foo from 'foo';
foo.endWorldHunger(true);
However, it was not able to resolve this. It was complaining to me inside VS Code, too (since I had noImplicitAny: true, I suppose, considering this).
I have changed my consuption to below and it worked out:
/// <reference path="../../typings/foo.d.ts"/>
import * as foo from 'foo';
foo.endWorldHunger(true);
Do I really need that reference declaration? I am expecting that I don't since I have specified the ./typings folder as one of my typeRoots but it's possible that I have configured it wrong somehow. Any thoughts on what I am doing wrong?
I am using TypeScript 2.2.1.