I want use inline-style-prefixer like:
var InlineStylePrefixer = require('inline-style-prefixer');
...
var prefixer = new InlineStylePrefixer(userAgent);
...
var _style = InlineStylePrefixer.prefixAll(style);
how to export constructor in a declare module?
declare module "inline-style-prefixer"{
export function InlineStylePrefixer(useagent:string):void; // error
export function prefixAll(style:Object):Object;
}
In order to export the default constructor, we use an export statement and import module at the required place. On creating an instance of the class, the constructor of a respective class is invoked. In the following example, we will use the JavaScript module in another module by exporting and importing it.
Use named exports to export multiple classes in TypeScript, e.g. export class A {} and export class B {} . The exported classes can be imported by using a named import as import {A, B} from './another-file' . You can have as many named exports as necessary in a file.
The export = syntax specifies a single object that is exported from the module. This can be a class, interface, namespace, function, or enum. When exporting a module using export = , TypeScript-specific import module = require("module") must be used to import the module.
By module. exports, we can export functions, objects, and their references from one file and can use them in other files by importing them by require() method.
You'd do two/three declares:
declare class InlineStylePrefixer {
constructor(useagent: string) {}
}
declare module InlineStylePrefixer {
export function prefixAll(style: Object): Object;
}
declare module "inline-style-prefixer" {
export = InlineStylePrefixer;
}
When you have a class and a module with the same name, the module is merged with the class.
I'm using TypeScript 2.0.10
Here's my definition that works for FuzzySearch, which I think is similar to what you want.
The default export is the class, which applies to this kind of import:import * as FuzzySearch from 'fuzzy-search';
The trick is to declare the class and also a variable with the class as the value and make that variable the default export.
fuzzy-search.d.ts
interface FuzzyOptions {
caseSensitive?: boolean;
sort?: boolean;
}
declare class FuzzySearch<T> {
constructor(haystack: T[], keys: string[], options?: FuzzyOptions);
search(needle: string): T[];
}
declare var fuzzySearchClass = FuzzySearch;
declare module 'fuzzy-search' {
export = fuzzySearchClass;
}
If you import the class from the module, such as:
import { Thing } from 'thing-module';
thing-module.d.ts
declare module 'thing-module' {
declare class Thing {
constructor(someArg: number);
doSomething(): string;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With