node默認找.js,解析ts須要安裝css
npm i ts-node -ghtml
target: es5
用tsc默認選擇es3node
若是在命令行中指定了配置文件,tsconfig會被忽略jquery
module: commonjs tsc ./src/es6/a.ts -t es3 -t target 簡寫webpack
target爲es3 es5,module默認指定爲es6git
tsc ./src/es6/a.ts -m amdes6
-m module 簡寫github
tsc util.ts -d 可生成對應的聲明文件 exports.c = 3 次級導出 module.exports = {} 頂級導出web
esModuleInterop: true import c4 = require("./es6/d") 既能夠用import = 方式導入 又能夠用import from 方式導入npm
namespace 用export 導出到全局
命名空間和模塊不要混用,不要在一個模塊中使用命名空間, 命名空間最好在一個全局的環境中使用
命名空間成員的別名問題: import circle = Shape.circle console.log(circal(2))
interface A { x: number; foo (bar: number): number; // 3 _5 foo (bar: 'a'): number // _2 } interface A { y: number; foo (bar: string): string // 1 _3 foo (bar: number[]): number[] // 2 _4 foo (bar: 'b'): number // _1 } let a: A = { x: 1, y: 2, foo(bar: any){ return bar } }
function Lib() {} namespace Lib { export let version = "1.0" } console.log(Lib.version) // 1.0 - 至關於聲明瞭一個Lib函數,在函數裏面導出了一個屬性
class C {} namespace C { export let state = 1 } console.log(C.state) 至關於給類添加了一個靜態屬性state
enum Color { Red, Yellow, Blue } namespace Color { export function min(){ } // 就至關於給這個枚舉類型增長了一個方法 //
npm i @types/jquery -D
能夠在這裏搜索: https://microsoft.github.io/TypeSearch/
// index.ts import $ from 'jquery' $('.app').css('color','red') globaleLib({x: 1}) globaleLib.dosomething() import moduleLib from './module-lib' moduleLib.dosomething() import umdLib from './umd-lib'
declare 關鍵字
// 聲明: declare function globalLib(options: globalLib.options): void interface Options { [key: string]: key } declare namespace globleLib { const version: string; function doSomething(): void; interface Options { [key: string]: key } } export = globleLib
// 源碼: function globalLib(options) { console.log(options) } globalLib.version = '1.0.0' globalLib.doSomething = function(){ console.log('globalLib do something') }
declare function moduleLib(options: moduleLib.options): void // 由於聲明文件自己是一個模塊,因此放在這裏不會暴露在全局 interface Options { [key: string]: key } declare namespace moduleLib { // ts官網中,多了個export export const version: string; function doSomething(): void; } export = moduleLib
// 聲明文件 declare nmdLib { const version: string function dosomething(): void } // 若是要編寫一個umd庫 這個語句是不可缺乏的 export as namespace umdLib export = umdLib
// 源碼: (function (root, factory) { if (typeof define === "function" && define.amd) { define(factory); } else if (typeof module === "object" && module.exports) { module.exports = factory(); } else { root.umdLib = factory(); } }(this, function() { return { version: '1.0.0', doSomething() { console.log('umdLib do something'); } } }));
import m from 'moment' declare module 'moment' { export function myFunction(): void } m.myFunction = () => {}
// 會對全局變量形成必定污染 declare global { namespace globalLib { function doAnything(): void } } globalLib.doAnything = () => {}
- jquery的模塊依賴 mode_modules/@types/jquery/package.json types: 'index' ---> index.d.ts // 模塊依賴,使用types屬性,ts會在@types目錄下尋找此sizzle, // ts會把sizzle的聲明文件引入進來 /// <reference types="sizzle" /> // 路徑依賴,使用path屬性,是個相對的路徑 /// <reference path="JQueryStatic.d.ts" /> /// <reference path="JQuery.d.ts" /> /// <reference path="misc.d.ts" /> /// <reference path="legacy.d.ts" />