安装

Typescript的基本介绍可以自行百度

centos虚拟机中可以完整的体验, virtualbox安装开发版本,选择开发工具项,否则增强功能无法安装【提示kernel 头文件缺失,yum安装后仍是无效】

一些具体的网址

https://github.com/Microsoft/TypeScriptSamples

http://www.typescriptlang.org/

http://stackoverflow.com/questions/30536840/typescript-how-to-reference-jquery-easyui-library

https://github.com/DefinitelyTyped/DefinitelyTyped

由于typescript基于node的环境,因此需要安装nodejs npm ,然后安装依赖的包,

直接链接国际站点太慢,加速npm包

编辑 ~/.npmrc 加入下面内容

registry = https://registry.npm.taobao.org

sudo yum install nodejs

sudo yum install npm

npm install -g typescript

如上即安装了typescript,命令行下输入tsc -h可以看看

在Java项目中拥抱Nodejs — 使用gruntjs编译typescript,并将生成的js合并、压缩

http://www.tuicool.com/articles/aY3IVz

如果使用了idea专业版,直接集成了typescript,使用起来更简单,只要配置了项目文件就行,typescript的项目文件tsconfig.json类似如下,根据自己的需要设置即可

{

"compilerOptions": {

"target": "es5",

"noImplicitAny": false,

"module": "commonjs",

"removeComments": true,

"sourceMap": true,

"outDir": "js/dev/",

"sourceRoot": "ts/"

}

//"include":[

//     "ts"

// ],

//"exclude": [

//     "js"

// ]

}

基本类型

//基本类型

let flag: boolean = false;

const pi = 3.1415;

var n: number = 1;

var s: string = 'hello';

enum Color { Red, Green };

var bns: number[] = [1, 2, 3];

var ar: Array<number> = [1, 2]

//any

var list2 = [1, true, "free"];

//

var x = null;

//union type

var u: string | number;

u = "OK";

u = 42;

//遍历

for(b1 in bns){

console.log(b1);

}

list2.forEach(e => {

console.log(e);

});

//

var tuple = { 'k1': 1, 'k2': (s: string): number => { console.log(s); return 100; } }

console.log(tuple["k2"]("hello world"));

interface IUserInfo {

age: any;//定义一个任何变量的 age.

userName: string;//定义一个 username.

width?: number; //可选属性

}

//类和接口 默认作用域 public

interface IClock {

currentTime: Date;

setTime(d: Date);

}

//--实现 IClock 接口

class Clock implements IClock {

currentTime: Date;

//--构造函数方法

constructor(h: number, m: number) {

this.setTime(new Date());

}

setTime(d: Date) {

this.currentTime = d;

}

}

let clk = new Clock(10, 10);

console.log(clk.currentTime);

class Person {

constructor(u: string) {

}

}

class Student1 extends Person {

constructor(username: string) {

super(username);

}

}

class Grid {

static origin = { x: 0, y: 0 };//不需要实例化就能访问

calculateDistanceFromOrigin(point: { x: number; y: number; }) {

var xDist = (point.x - Grid.origin.x);

var yDist = (point.y - Grid.origin.y);

return Math.sqrt(xDist * xDist + yDist * yDist) / this.scale;

}

constructor(public scale: number) { }

}

//.net语言的get set

var passcode = "secret passcode";

class Employee {

private _fullName: string;

get fullName(): string {

return this._fullName;

}

set fullName(newName: string) {

if (passcode && passcode == "secret passcode") {

this._fullName = newName;

} else {

console.error("Error");

}

}

}

//定义合并

interface Box {

height: number;

width: number;

}

interface Box {

scale: number;

}

var box: Box = { height: 5, width: 6, scale: 10 }

module Animals {

export class Zebra { }

}

module Animals {

export interface Legged { numberOfLegs: number; }

export class Dog { }

}

var buildName1 = (firstName: string, lastName?: string) => {

if (lastName) {

return `${firstName} ${lastName}`;

} else {

return firstName;

}

};

var b1 = buildName1("a", "b");

console.log(n);

function buildName(firstName: string, ...restOfName: string[]) {

return `${firstName} ${restOfName.join(" ")}`;

}

var emplyeeName = buildName("lai", "xiao", "chai", "yun");

console.log(emplyeeName);

var deck = {

suits: ["hearts", "spades", "clubs", "diamonds"],

cards: Array(52),

  //要想在函数内使用“this”,内层使用箭头函数,外层使用正常函数

createCardPicker: function () {

return () => {

var pickedCard = Math.floor(Math.random() * 52);

var pickedSuit = Math.floor(pickedCard / 13);

return { suit: this.suits[pickedSuit], card: pickedCard % 13 };

}

}

}

var cardPicker = deck.createCardPicker();

var pickedCard = cardPicker();

console.log(`card: ${pickedCard.card} of ${pickedCard.suit}`);

function identity<T>(arg: T): T {

return arg;

}

var output = identity<string>("string");

console.log(output);

class GenericNumber<T>{

zeroValue: T;

add: (x: T, y: T) => T;

fuck(x) {

return x + 1;

}

}

var myGenericeNumber = new GenericNumber<number>();

myGenericeNumber.zeroValue = 0;

interface Lengthwise {

length: number;

}

function logginIdentity<T extends Lengthwise>(arg: T): T {

console.log(arg.length);

return arg;

}

interface Fullname {

[index: number]: string;

}

interface Firstname {

[index: string]: string;

}

var myName: Fullname = ["lai", "chuanfeng"];

var myFirstname: Firstname = { "firstname": "lai" };

console.log(myName[0]);

interface Account {

add(x: number): void;

}

function account(): Account {

return {

add(x) { ++x }

}

}

var a = account();

a.add(5);

//自动类型推导和提示

function langsvr(){

return {'a':'1', 'b':2};

}

langsvr().a;

//自动的any类型

var fn = (a, b) => { return a + b };

console.log(fn(1, 2));

console.log(fn("1", "2"));

console.log(fn(1, "2"));

定义

和已有Javascript js交互的例子

interface JQuery {
text(content: string);
}
interface JQueryStatic {
get(url: string, callback: (data: string) => any);
(query: string): JQuery;
}
declare var $: JQueryStatic;
$.get("http://mysite.org/divContent",
function (data: string) {
$("div").text(data);
}
);
The 'JQueryStatic' interface references another interface: 'JQuery'. This interface represents a collection of one or more DOM elements.

The jQuery library can perform many operations on such a collection, but in this example the jQuery client only needs to know that it can set the text content of each jQuery element in a collection by passing a string to the 'text' method.

The 'JQueryStatic' interface also contains a method, 'get', that performs an Ajax get operation on the provided URL and arranges to invoke the provided callback upon receipt of a response.
(query: string): JQuery;

The bare signature indicates that instances of the interface are callable. This example illustrates that
TypeScript function types are just special cases of TypeScript object types. Specifically, function types are object types that contain one or more call signatures.

内置的Javascipt的类型支持
declare var document;
document.title = "Hello";
// Ok because document has been declared
In the case of 'document', the TypeScript compiler automatically supplies a declaration, because
TypeScript by default includes a file 'lib.d.ts' that provides interface declarations for the built-in JavaScript  library as well as the Document Object Model

typescript编译器内置的定义文件
cancellationToken.js              lib.es2017.object.d.ts
lib.dom.d.ts                      lib.es2017.sharedmemory.d.ts
lib.dom.iterable.d.ts             lib.es5.d.ts
lib.d.ts                          lib.es6.d.ts
lib.es2015.collection.d.ts        lib.scripthost.d.ts
lib.es2015.core.d.ts              lib.webworker.d.ts
lib.es2015.d.ts                   protocol.d.ts
lib.es2015.generator.d.ts         README.md
lib.es2015.iterable.d.ts          tsc.js
lib.es2015.promise.d.ts           tsserver.js
lib.es2015.proxy.d.ts             tsserverlibrary.d.ts
lib.es2015.reflect.d.ts           tsserverlibrary.js
lib.es2015.symbol.d.ts            typescript.d.ts
lib.es2015.symbol.wellknown.d.ts  typescript.js
lib.es2016.array.include.d.ts     typescriptServices.d.ts
lib.es2016.d.ts                   typescriptServices.js
lib.es2017.d.ts                   typingsInstaller.js

TypeScript的概要和简介的更多相关文章

  1. Typescript 解构 、展开

    什么是解构.展开? 展开与解构作用相反,简单来说: 解构:解构赋值允许你使用数组或对象字面量的语法,将数组和对象的属性付给各种变量. 展开:允许你讲一个数组展开为另一个数组,或一个对象展开为另一个对象 ...

  2. TypeScript VS JavaScript 深度对比

    TypeScript 和 JavaScript 是目前项目开发中较为流行的两种脚本语言,我们已经熟知 TypeScript 是 JavaScript 的一个超集,但是 TypeScript 与 Jav ...

  3. Typescript 和 Javascript之间的区别

    TypeScript 和 JavaScript 是目前项目开发中较为流行的两种脚本语言,我们已经熟知 TypeScript 是 JavaScript 的一个超集,但是 TypeScript 与 Jav ...

  4. TypeScript + React + Redux 实战简单天气APP全套完整项目

    下载链接:https://www.yinxiangit.com/171.html 目录: 从面向过程的js到面向对象的js,让web前端更加高大尚.让你的前端步步日上,紧跟技术发展的前沿.让你构建更加 ...

  5. OracleGateway11gR2访问异构数据库(MSSQL)配置文档(转)

    1.前提条件 1. 准备工作 软件名称 操作系统 IP地址 端口 用户 密码 版本 状态 Oracle数据库 Windows localhost 1521 scott scott win32 Orac ...

  6. TextField和TextView

    本文概要 1.简介 2.介绍TextField控件 3.介绍TextView控件 4.键盘的打开和关闭 5.关闭和大开键盘的通知 6.键盘的种类 详情 1.简介 与Label一样,TextField和 ...

  7. Fiddler和app抓包

    1:请在“运行”,即下面这个地方输入certmgr.msc并回车,打开证书管理. 打开后,请点击操作--查找证书,如下所示: 然后输入“fiddler”查找所有相关证书,如下所示: 可以看到,我们找到 ...

  8. 03.Python网络爬虫第一弹《Python网络爬虫相关基础概念》

    爬虫介绍 引入 之前在授课过程中,好多同学都问过我这样的一个问题:为什么要学习爬虫,学习爬虫能够为我们以后的发展带来那些好处?其实学习爬虫的原因和为我们以后发展带来的好处都是显而易见的,无论是从实际的 ...

  9. 16.Python网络爬虫之Scrapy框架(CrawlSpider)

    引入 提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Request模块递归回调parse方法). 方法 ...

随机推荐

  1. unittest单元测试框架

    unittest单元测试框架 概述: 单元测试框架主要用来完成以下三件事: 提供用例组织与执行:当测试用例只有几条时,可以不必考虑用例的组织,但是当用例达到成百上千条时,大量的用例堆砌在一起,就产生了 ...

  2. 大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  3. RPC框架--missian框架

    Missian简介 注:(创始者不明,应用于sina下面的公司(爱问)) Missian是一个构建于Mina和Hessian基础上的异步RPC框架,能够兼容HTTP协议和TCP协议,能和Hessian ...

  4. Jenkins结合.net平台工具之Msbuild

    前面我们讲解了关于Jenkins的一些基本知识,通过这些知识我们可以结合一些其它工具实现更为复杂的任务,本篇我们将介绍如何使用msbuild工具结合Jenkins实现构建一个.net控制台框. 首先我 ...

  5. wget命令的几个常用选项和示例

    wget命令用来从指定的URL下载文件.wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕.如果是服务器打断下 ...

  6. Go Web:Handler

    Multiplexer根据URL将请求路由给指定的Handler.Handler用于处理请求并给予响应.更严格地说,用来读取请求体.并将请求对应的响应字段(respones header)写入Resp ...

  7. shell编程基础(七): 处理文件命令sed与awk

    一.sed(以行为单位处理文件) sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑 ...

  8. 如何将各种低版本的discuz版本升级到discuz x3.0

    最近在做discuz改版的项目,遇到了很多问题,相信很多拥有discuz论坛的版主,站长和程序猿在升级或改版discuz的过程中遇到过和我一样的问题,所以我开了一个discuz专栏,为大家讲解一下di ...

  9. 【转载】 IIS服务器防盗链设置

    在实际运行的服务器环境中,我们自己网站中的资源一般不希望被外部网站引用,被外部网站引用IIS网站中的资源文件,一是会加重了服务器的负担,二是占用了你自己服务器的外网带宽资源,因此我们希望防止盗链这种情 ...

  10. dotnetcore-officeaddin-toolbox : Office 365 Add-in开发人员的工具箱

    在上一篇文章(.NET Core开源行动:一键创建Excel Add-in) 中我给大家展示了一套为Office 365 Add-in开发人员准备的模板库,你可以通过 dotnet new excel ...