TypeScript学习(二):数据类型

/**

 *一.typescript类型学习

 */

//1.1 number类型

let a:number;

a=123;

//这么写会报错,a="hello,world";

console.log(a);

//1.2 string类型

let b:string;

b="hello,world";

console.log(b);

//1.3 boolean类型

let c:boolean=true;

console.log(c);

//返回值类型 :number 可以不写

function addNew(a:number,b:number):number

{

    return a+b;

}

addNew(100,200);

//1.4 联合类型

let e:boolean|string;

e=true;

console.log(e);

e="true";

console.log(e);

//1.5 any类型,和js一样,不再检测类型,不建议用

//let f;//等同于let f:any

let f:any;

f=1;

console.log(f);

f="haha";

console.log(f);

f=true;

console.log(f);

//1.6 类型转换方法1

let g1=f as string;

console.log("g1="+g1);

//类型转换方法2

let g2=<string> f;

console.log("g2="+g2);

//1.7 object类型表示一个Js对象,ts中一切皆对象

let o:object;

o={};

o=function(){};

//1.8 这么写就限定了o1对象只能由name和age两个属性构成的类型对象,加上?表示属性可选

let o1:{name:string,age?:number};

o1={name:"孙悟空",age:18};

console.log(o1);

o1={name:"猪八戒"};

console.log(o1);

//1.9 表示o2的类型,除了name之后,可以有任意多个任意类型的属性

let o2:{name:string,[propName:string]:any};

o2={name:"唐僧",age:28,sex:"男"}

console.log(o2);

//1.10 设置对象为函数类型

//o3是个函数类型对象

let o3:Function;

//o4是一个参数为number,string,返回值为string的函数类型对象

let o4:(a:number,b:string)=>string;

o4=function(p1,p2):string{

    return p1+p2;

}

//1.11 数组声明  类型[] 或Array<类型>

let arr:string[];

arr=["a",'b',"c"];

console.log(arr);

console.log(arr[0]);

let arr1:number[];

arr1=[1,2,3]

console.log(arr1);

console.log(arr1[1]);

let arr2:Array<string>;

arr2=["haha","hi","great"];

//直接new也行

var sites:string[] = new Array("Google","Runoob","Taobao","Facebook") ;

function disp(arr_sites:string[]) {

     for(var i = 0;i<arr_sites.length;i++) {

             console.log(arr_sites[i]);

     }  

}  

disp(sites);

console.log(arr2);


 

//1.12 元组,即固定长度的数组 [类型,类型...]

//表示数组里面有两个值,一个是string类型,一个是number类型

let y:[string,number];

y=["hi",123];


 

//1.13枚举

enum Gender{

  Female=0,

  Male=1

}

let person:{name:string,sex:Gender};

person={name:"张三",sex:Gender.Male};

console.log(person);

//1.14 类型的别名

type mytype=string|number;

let m:mytype;

m=1;

console.log("m="+m);

m="str";

console.log("m="+m);

//1.15 字面量类型,即取值只能是指定的值之一

let sex:"male"|"female";

sex="good";//这么写会报错,必须是male或者femal

sex="male";

sex="female";

//1.16异常类型Error和void表示空类型,never表示啥类型也没有

// 返回值为 never 的函数可以是抛出异常的情况

function error1(message: string): void {

  throw new Error(message);

}

function error2(message: string): never {

  throw new Error(message);

}

//捕抓异常

try {

  error1("错误测试1");

  error2("错误测试2");//error2将不会被执行,因为error1导致异常被捕抓

} catch (error) {

  console.log(error);

}

//error2("错误测试3");//没有捕抓,终端也会显示异常信息

//1.17 字段类型map类型,按照key,value来定义

//空map

let myMap1 = new Map();

//设置值

let myMap2 = new Map([

        ["key1", "value1"],

        ["key2", "value2"]

    ]);

   //map相关操作

    let nameSiteMapping = new Map();

    // 设置 Map 对象

    nameSiteMapping.set("Google", 1);

    nameSiteMapping.set("Runoob", 2);

    nameSiteMapping.set("Taobao", 3);

     

    // 获取键对应的值

    console.log(nameSiteMapping.get("Runoob"));     // 2

     

    // 判断 Map 中是否包含键对应的值

    console.log(nameSiteMapping.has("Taobao"));       // true

    console.log(nameSiteMapping.has("Zhihu"));        // false

     

    // 返回 Map 对象键/值对的数量

    console.log(nameSiteMapping.size);                // 3

     

    // 删除 Runoob

    console.log(nameSiteMapping.delete("Runoob"));    // true

    console.log(nameSiteMapping);

    // 移除 Map 对象的所有键/值对

    nameSiteMapping.clear();             // 清除 Map

    console.log(nameSiteMapping);

   




 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值