ts-import-ts
v1.1.0
Published
ts-import-ts
Downloads
10
Readme
ts-import-ts - Readme
Load TS files when running through ts-node, but load the compiled JS files when running through node. Great for typescript applications which dynamically load files (e.g. database migrations, etc.)
Installation
npm i ts-import-ts
Basic Usage
Create the file you would like to import. Make sure to export default (or see section on named exports below)
test/sample/sample.ts
export default class Sample {
public foo = 'bar';
}
And load the file:
src/index.ts
import { tsimport } from 'ts-import-ts';
const sampleClass: any = tsimport('test/sample/sample');
const sampleObject = new sampleClass();
console.log(foo); // Output: bar
Advanced Usage w/ Type Safety
Pass a type parameter to tsimport
to strongly-type the return value. In this example, tsimport will return a string foo
.
test/sample/sample.ts
const foo: string = 'bar';
export default foo;
src/index.ts
import { tsimport } from 'ts-import-ts';
const sampleFoo = tsimport<string>('test/sample/sample');
console.log(sampleFoo); // Output: bar
Advanced Usage w/ Inheritance
Create a base-class:
src/cool-file.ts
export class CoolFile {
foo: string;
}
Extend the class in the files you'd like to load:
cool-files/first.ts
import { CoolFile } from '../src/cool-file';
export class FirstCoolFile extends CoolFile {
foo = 'bar';
}
Load the files, typing the import as typeof CoolFile
:
src/index.ts
import { tsimport } from 'ts-import-ts';
import { CoolFile } from './cool-file';
const loaded = tsimport<typeof CoolFile>('cool-files/first');
const sampleObject = new sampleClass();
console.log(sampleObject.foo); // Output: bar
Named Imports
If a file outputs multiple things, or you don't want to export default
, you may pass a name to import as the second argument:
test/sample/sample.ts
export const foo = 'bar';
src/index.ts
import { tsimport } from 'ts-import-ts';
tsimport('test/sample/sample', 'foo');
Import All
Pass null as a second argument to load an object with all exported things:
test/sample/sample.ts
export const foo = 'bar';
export const baz = 'buzz';
src/index.ts
import { tsimport } from 'ts-import-ts';
const imported = tsimport('test/sample/sample');
console.log(imported) // Ouptut: { foo: 'bar', baz: 'buzz' }
Contributing & Development
See contributing.md for information on how to develop or contribute to this project!