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 exportedimport { ZipCodeValidator as ZCV } from "./ZipCodeValidator"; // import & renameimport * as validator from "./ZipCodeValidator"; // import entire module with a nameimport "./my-module.js"; // for side-effect onlyimport Validator from "ModuleWithDefault" // import the default export// Import CommonJS compatible moduleimport module = require("module")export default something; // export default, each module can has only one defaultexport interface StringValidator {...}export const numberRegexp = ...;export class ZipCodeValidator implements StringValidator {...}export { SomethingAlreadyDefined };export { SomethingAlreadyDefined as exportedName };// Re-exportexport {ZipCodeValidator as RegExpBasedZipCodeValidator} from "./ZipCodeValidator";export * from "./StringValidator"; // CommonJS 'exports' compatible exportexport = ZipCodeValidator;In "shims-vue.d.ts" in Vue typescript project
declare module "*.vue" { import Vue from "vue"; export default Vue;}