https://www.runoob.com/typescript/ts-basic-syntax.html
Helloworld
const hello : string = "Hello World!" console.log(ello)
类演示
class Site { name():void { console.log("Runoob") } } var obj = new Site(); obj.name();
基础类型
number:数字 string:字符串 boolean:布尔 元组 let x: [string, number]; x = ['Runoob', 1]; // 运行正常 x = [1, 'Runoob']; // 报错 console.log(x[0]); // 输出 Runoob 枚举 enum Color {Red, Green, Blue}; let c: Color = Color.Blue; console.log(c); // 输出 2 const getValue = () => { return 0 } enum List { A = getValue(), B = 2, // 此处必须要初始化值,不然编译不通过 C } console.log(List.A) // 0 console.log(List.B) // 2 console.log(List.C) // 3 function hello(): void { alert("Hello Runoob"); } null undefined:用于初始化变量为一个未定义的值 never:never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值 let x: any = 1; // 数字类型 x = 'I am who I am'; // 字符串类型 x = false; // 布尔类型 let arrayList: any[] = [1, false, 'fine']; arrayList[1] = 100; // 启用 --strictNullChecks let x: number | null | undefined; x = 1; // 运行正确 x = undefined; // 运行正确 x = null; // 运行正确
数组定义
// 在元素类型后面加上[] let arr: number[] = [1, 2]; // 或者使用数组泛型 let arr: Array= [1, 2];
join():数组元素合并字符串
map()逐个处理数组元素,numbers.map(Math.sqrt);
reduce、reduceRight
for…of 、forEach、every 和 some 循环
此外,TypeScript 还支持 for…of 、forEach、every 和 some 循环。
for...of 语句创建一个循环来迭代可迭代的对象。在 ES6 中引入的 for...of 循环,以替代 for...in 和 forEach() ,并支持新的迭代协议。for...of 允许你遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构等。
let someArray = [1, "string", false]; for (let entry of someArray) { console.log(entry); // 1, "string", false }
let list = [4, 5, 6]; list.forEach((val, idx, array) => { // val: 当前值 // idx:当前index // array: Array });
let list = [4, 5, 6]; list.every((val, idx, array) => { // val: 当前值 // idx:当前index // array: Array return true; // Continues // Return false will quit the iteration });
函数定义
function function_name( param1 [:datatype], param2 [:datatype], lastName?: string) :return_type { // 语句 return value; } // lastName为可选参数,可有可没有 // 缺省参数同其他语言一致 // 剩余参数 ...a:string[] // 匿名函数:var func1 = function:number(){...} // 构造函数: var myFunction = new Function("a", "b", "return a * b"); var x = myFunction(4, 3); // Lambda var foo = (x:number)=>10 + x console.log(foo(100)) //输出结果为 110
Number
toFixed() 把数字转换为字符串,并对小数点指定位数。
toPrecision()
把数字格式化为指定的长度。
String
charAt() 返回在指定位置的字符。 var str = new String("RUNOOB"); console.log("str.charAt(0) 为:" + str.charAt(0)); // R charCodeAt() 返回在指定的位置的字符的 Unicode 编码。 var str = new String("RUNOOB"); console.log("str.charCodeAt(0) 为:" + str.charCodeAt(0)); // 82 concat() 连接两个或更多字符串,并返回新的字符串。 indexOf() 返回某个指定的字符串值在字符串中首次出现的位置。 lastIndexOf() 从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。
元组
var a =[10,"Runoob"] var [b,c] = a console.log( b ) console.log( c )
TypeScript 联合类型
var val:string|number val = 12 console.log("数字为 "+ val) val = "Runoob" console.log("字符串为 " + val)
TypeScript 接口
interface IPerson { firstName:string, lastName:string, sayHi: ()=>string } var customer:IPerson = { firstName:"Tom", lastName:"Hanks", sayHi: ():string =>{return "Hi there"} }
类
class Car { // 字段 engine:string; // 构造函数 constructor(engine:string) { this.engine = engine } // 方法 disp():void { console.log("函数中显示发动机型号 : "+this.engine) } } // 创建一个对象 var obj = new Car("XXSY1") class PrinterClass { doPrint():void { console.log("父类的 doPrint() 方法。") } } class StringPrinter extends PrinterClass { doPrint():void { super.doPrint() // 调用父类的函数 console.log("子类的 doPrint()方法。") } } // 静态 class StaticMem { static num:number; static disp():void { console.log("num 值为 "+ StaticMem.num) } } StaticMem.num = 12 // 初始化静态变量 // 判断是否是指定类 var isPerson = obj instanceof Person; // 接口 class AgriLoan implements ILoan
TypeScript 对象
var object_name = { key1: "value1", // 标量 key2: "value", key3: function() { // 函数 }, key4:["content1", "content2"] //集合 }
命名空间
namespace SomeNameSpaceName { export interface ISomeInterfaceName { } export class SomeClassName { } }
export:模块外部可见