To package a module for both Javascript & typescript use, enable "declaration" in compiling (tsconfig.json). Then use "main" and "types" in package.json to point to Javascript entry and Typescript declaration
...
"description": "A nice greeter",
"main": "lib/index.js",
"types": "lib/index.d.ts",
...
import { ZipCodeValidator } from "./ZipCodeValidator"; // import something exported
import { ZipCodeValidator as ZCV } from "./ZipCodeValidator"; // import & rename
import * as validator from "./ZipCodeValidator"; // import entire module with a name
import "./my-module.js"; // for side-effect only
import Validator from "ModuleWithDefault" // import the default export
// Import CommonJS compatible module
import module = require("module")
export default something; // export default, each module can has only one default
export interface StringValidator {...}
export const numberRegexp = ...;
export class ZipCodeValidator implements StringValidator {...}
export { SomethingAlreadyDefined };
export { SomethingAlreadyDefined as exportedName };
// Re-export
export {ZipCodeValidator as RegExpBasedZipCodeValidator} from "./ZipCodeValidator";
export * from "./StringValidator";
// CommonJS 'exports' compatible export
export = ZipCodeValidator;
In "shims-vue.d.ts" in Vue typescript project
declare module "*.vue" {
import Vue from "vue";
export default Vue;
}