Type Script 变量声明及基础类型

1.与js相同,使用var、let或者const等;

2.声明变量指定类型(任意类型都可),这样的变量赋值时只能使用指定类型的值,以达到强类型语言变量的特点及其优点

-------------------------------------------------------------------------

一、布尔值

let isLogin: boolean = false; //编译通过

二、数字

let n1: number = 6;

let n2: number = 0xfood;  // ES6中的十六进制表示法,会被编译成十进制数字

let n3:number = 0b1010; // ES6中的二进制表示法,会被编译成十进制数字

let n4: number = 0o744; //ES6中的八进制表示法,会被编译成十进制数字

ler n5: number = NaN;

let n6: number = Infinity;

三、字符串

let myName: string = 'karen';

let myAge: number = 25;

let str: string = `Hello,my name is ${myname}`   \\ 模板字符串

-----------字符串字面量类型用来约束取值只能是某几个字符串中的一个。---------------

type EventNames = 'click' | 'scroll' | 'mousemove';

function handleEvent(ele: Element, event:  EventNames){函数体}

     handelEvent(<Element>document.getElementById('hello'),'scroll');  // 成功

     handelEvent(<Element>document.getElementById('world'),'dbclick');  // 失败, event 不能         为'dbclick'

四、数组 

let score: number[ ] = [1,20,parseInt('50')];

let fruit : Array<string|number> = ['apple','banana','pear',20];

let arr1: number[ ] = [1,1,2,3,5] //正确

let arr2: number[ ] = [1,2,3,'1',5] // 错误 出现了字符串

let arr3: number[ ] = [1,1,2,3,5] 

    arr3.push('8')//  错误

let arr4: Array<number> = [1,1,2,5] //正确

let arr5: Array<string> = ["hello","h5"] //正确

五、元组

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

比如,你可以定义一对值分别为 stringnumber类型的元组。

let tom:[string,number] = ['Tom',25];

//通过下标赋值
let tom : [string,number] = [' ', 0 ];

tom[0] = 'Tom';

tom[1] = 25;

----------越界操作

let tom : [string,number];

tom = ['Tom',25];

tom.push('male');

tom.push(true);-------报错,当添加越界的元素时,它的类型会被限制为元组中每个类型的联合类型

//  解构赋值

const lilei:[string,number] = ["Lilei",23];

console.log(lilei);

const[myname,myage] : [string,number] = lilei;

console.log(myname, myage);----"Lilei",23

六、枚举

enum类型是对JS标准数据类型的一个补充。 使用枚举类型可以为一组数值赋予友好的名字。

枚举类型用于取值被限定在一定范围内的场景,比如一周只能有七天,颜色限定为红绿蓝等。 枚举成员会被赋值为从 0 开始递增的数字,同时也会对枚举值到枚举名进行反向映射,也可以手动的指定成员的数值;

//性别 一般是存储为数字的

enum Gender {Secret, Male, Female};

console.log(Gender.Male);

//一周的每天
enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
console.log(Days.Sun, Days.Mon, Days.Tue, Days.Sat);
console.log(Days["Sun"] === 0); // true
console.log(Days["Sat"] === 6); // true

//根据编号得到元素名
console.log(Days[0] === "Sun"); // true
console.log(Days[6] === "Sat"); // true

七、Any

有时需要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查,这个现象叫静默。 那么我们可以使用 any类型来标记这些变量。

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;   // okay, definitely a boolean

可以认为,声明一个变量为任意值之后,对它的任何操作,返回的内容类型都是任意值。

八、Void

void,无效的,表示没有任何类型。 当一个函数没有返回值时,其返回值类型是 void

  function warnUser( ): void {

        console.log("This is my warning message");

}

声明一个void类型的变量没什么用,因为你只能为它赋予undefinednull;

九、Null和Undefined

undefinednull两者各自有自己的类型undefined和null。 和 void相似,用处不大;

十、Never

never类型表示的是那些永不存在的值的类型。

例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型;

// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
    throw new Error(message);
}

// 推断的返回值类型为never
function fail() {
    return error("Something failed");
}

十一、Object

object表示非原始类型,也就是引用类型,是除numberstringbooleansymbolnullundefined之外的类型,可以使用"对象", "数组对象"、string、number等为其赋值,null和undefined不行的。 之所以Object变量可以接收任何对象,是因为Object是所有类的父类。

let a:Object = [1, 2, 3]
console.log(a);
a = {id:1, name:'哈哈'}
console.log(a); 
a = '{id:1, name:"哈哈"}'
console.log(typeof a); 

十二、类型别名与联合类型

多个类型的联合,它们之间是或的关系

type manyType = number | boolean | string;

let a: manyType

a = 0o700;

console.log(a);

a = true;

console.log(a);

十三、类型推论

没有声明类型的变量被赋值一次后,变量的类型就确定了,之后再次被赋值时,不可改变赋值的类型。

let r = 100;//确定了r的类型为number
r = "fds";//编译报错,因为r的类型为number

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值