Typescript 第一天(安装,编译,数据类型)

学习目标:

从零开始学习Typescript
每天记录学习Typescript的内容和遇到的问题

第一天:

1、Typescript安装

npm install -g typescript
或者
cnpm install -g typescript

检查是否安装成功
tsc -v

2、Typescript编译

1、 创建ts管理文件(tsconfig.json) 
	tsc -init
2、 修改“outDir”的地址,代表生成的js文件地址
3、 点击vscode上方操作栏>终端>运行任务>typescript>tsc监视

3、Typescript中的数据类型

typescript中为了使编写的代码更加规范,有利于维护,增加了类型校验

注意: 当变量定义为某种类型后,如果赋值成其他类型或导致编译报错

  • 数字类型(Number)let a: Number=1

  • 布尔类型(Boolean)let a: Boolean=true
let a = true;
var b= false;
const c = true;
let d:boolean = true;
let e:true=true;//这是一个类型只为true的布尔类型
let f:true = false;

1、可以让TtypeScript推导出值的类型为boolean(a和b)。
2、可以让typeScript推导出值为某个具体的布尔值(c)。
3、可以明确告诉typeScript,值的类型为boolean(d)。
4、可以明确告诉typeScript,值为某个具体的布尔值(e和f)。

  • 字符串类型(String)let a: String='asdfg'

  • 数组类型(Array)let a: Number[]=[1,2,3,4,5]或者let a: String[]=['q','j','g','f','x',]

第二种定义数组类型的方法
let arr:Array=[1,2,3,4,5]

  • 元组类型(Tuple)let a:[String,Number,Boolean,Number]=['asd',2,true,6]

元组类型属于数组的一种,定义的数据类型是后面赋值的相同顺序,不可变更

  • 枚举类型(Enum)
主要用于标识状态或者一些定义的固定值
enum Flag{success=1,error=2}
let f:Flag = Flag.success //1

如果没有给定义的枚举类型赋值,那么获取到的就是当前枚举的索引值(从0开始),如果有定义的就赋值定义的值,如果下一个仍然没有定义,那么打印上一个值之后的索引值,前一个必须是number
enum Color{red,blue=5,orange};
let c:Color = Color.blue //5
let r:Color = Color.red //0
let o:Color = Color.orange//6
  • 任意类型(Any)let a: any=1

任意类型可以赋值任何类型不受限制

具体使用场景
let oBox:any = document.getElementById("box");
oBox.style.color = "red"
  • null和undefined
    let a: String | undefined | null;

null和undefined 其他(never类型)数据类型的子类型

  • void类型

void标识没有任何类型,一般用于定义方法的时候没有返回值的状况

function run():void{
	console.log('run')
}
run()
  • never类型

代表从不会出现的值,也就意味着声明never的变量只能被never类型所赋值,不常用

let a:undefined;
a=undefined//可以

let b:never;
b=(()=>{
	throw new Error("error")
})()
  • Unknow类型

少数情况下,如果你确定无法预知一个值的类型,不要使用any,应该使用unknow,与any类似,它也表示任何值,但是typescript会要求再做检查,细化类型

	let a :unknown = 30	//unknown
	let b = a === 123 //boolean
	let c = a+10 // error错误
	if(typeof a==='number'){
		let d = a+10  //number
	}

1、TypeScript不会把任何值推导为unknown类型,必须显式注解(a)。
2、unknown类型的值可以比较(b)。
3、执行操作时候不能假定unknown类型的值为某种特定类型(c),必须先向TypeScript证明一个值却是是某个类型(d)。

  • 对象

typeScript的对象类型表示对象的结构,但是注意通过对象类型是无法区分不同的简单对象或复杂对象

let c:{
    firstName:string,
    lastName:string
}={
    firstName:"john",
    lastName:"Azo"
}

class Person{
    constructor(
        public firstName:string,//public是this.firstName = firstName的简写
        public lastName:string
    ){}
    run():string{
        return this.firstName+this.lastName;
    }
}
let d = new Person("madd","Azdadow")
console.log(d.run());

索引签名
通过这种方式可以告诉typeScript,指定的对象可能有更多的键,这种语法的意思是:“在这个对象中,类型T的键对应的值为U类型”
**注意:**又一项规则非常重要,键的类型必须赋值给number或者string!!!

let jalskdfjlajflajf:{
    [lakjsdflanumbner:number]:string
}={
    1:"adadad",
    6:"saffsdf"
};
console.log(jalskdfjlajflajf[1]);

遇到的问题:

1、当定义变量或者方法的类型时候,类型的英文写成首字母大写就没问题(String)
,如果有的时候某一个小写的(string)就有问题,编译会报错,但是不影响程序的执行,目前尚不清楚原因

2、public是this.firstName = firstName的简写,这个是哪一地方出现的规则?

3、object和Object的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值