去年换工作去参加其他公司面试,很多公司都问你会ts吗?了解ts吗?,第一家问的我一脸蒙蔽样,很老实的我回答说我不知道没有了解过,面试官一副鄙视样很受打击,回来之后我就网上查询搜索ts,搜索出来的原来ts是TypeScript ,是javascript的超集,所有使用JavaScript实现的东西TypeScript都能实现 , TypeScript现在用的已经很广泛了,无论你使用ng、React还是Vue都可以使用TypeScript来实现的你JavaScript代码,原来我真的落后咯,于是我就开始好好的学习TypeScript,只要你有javascript基础就可以很愉快的学习这门新技术。
TypeScript不同于javascript的是它是强类型的,必须要定义类型(其实不用定义也可以,他会被当作javascript编译,但是这样就会显得我们不专业),以下就是我学习typescript总结的一些笔记,希望对应看到我博客的码农有所帮助(文采不好,希望理解)。
- 安装、
- 先按照node
- npm install typescript -g 全局安装
- tsc --version
- 搭建typescript项目
- 新建一个文件夹然后,npm init -y来初始化项目,生成package.json文件。
- 创建tsconfig.json文件,在终端中输入tsc --init:它生成一个TypeScript项目的配置文件,可以通过读取它来设置TypeScript编译器的编译参数
- 装@types/node,使用npm install @types/node --dev-save进行安装。这个主要是解决模块的声明文件问题。
- 编写HelloWorld.ts文件,然后进行保存,代码如下。
var a:string = "HelloWorld"
console.log(a)
-
- 在Vscode的任务菜单下,打开运行生成任务,(新版本在终端->运行生成任务,快捷键为:ctrl+shift+b)然后选择tsc:构建-tsconfig.json,这时候就会生成一个helloWorld.js文件
- 在终端中输入node helloWorld.js就可以看到结果了。
- TypeScript 数据类型
Undefined :定义了一个变量,但没有给他赋予任何值的时候,他就是Undefined类型
Number:数值类型;
string : 字符串类型;
Boolean: 布尔类型;
enum:枚举类型;
enum fruit{
nan = '苹果',
nv = '香蕉',
yao= '哈密瓜'
}
any : 任意类型,一个牛X的类型;
void:空类型;如果是函数里面使用就不返回任何东西
Array : 数组类型;
Tuple : 元祖类型;
Null :空类型。
- TypeScript函数
function findShuaiguo(age:number):string{
return '找到了'+age+'岁的小帅哥'
}
var age:number = 18
var result:string = findShuaiguo(age)
console.log(result)
可选参数函数 ?
function findShuaiguo2(age:number , stature?:string):string{
let yy:string = ''
yy = '找到了'+age+'岁'
if(stature !=undefined){
yy = yy + stature
}
return yy+'的小帅哥'
}
var result:string = findShuaiguo2(22,'身材高挑')
console.log(result)
有默认参数
function findShuaiguo2(age:number=18,stature:string='身材高挑'):string{
let yy:string = ''
yy = '找到了'+age+'岁'
if(stature !=undefined){
yy = yy + stature
}
return yy+'的小帅哥'
}
var result:string = findShuaiguo2()
console.log(result)
有剩余参数的函数(传递给函数的参数个数不确定)
function findShuaiguo3(...xuqiu:string[]):string{
let yy:string = '找到了'
for (let i =0;i<xuqiu.length;i++){
yy = yy + xuqiu[i]
if(i<xuqiu.length){
yy=yy+'、'
}
}
yy=yy+'的小帅哥'
return yy
}
var result:string = findShuaiguo3('22岁','大长腿','瘦高瘦高','有型')
console.log(result)
- TypeScript有3种函数的定义方式
(1)、函数表达式
function add(n1:number,n2:number):number{
return n1+n2
}
(2)、函数声明式
var add = function(n1:number,n2:number):number{
return n1+n2
}
console.log(add(1,4))
- 、箭头函数
var add = (n1:number,n2:number):number=>{
return n1+n2
}
console.log(add(1,4))
- 引用类型数组
- 、number类型的数组
Let arr1:number[]
- 、字符串类型
Let arr1:Array<string>
字面量赋值法
Let arr1:number[] = []
Let arr2:number[] = [1,2,3,4,5]
Let arr3:Array<string> = [“aaa”,”bbs”,”cccc”]
Let arr4:Array<boolean> = [true,false,true]
构造函数赋值法
Let arr1:number[] = new Array()
Let arr2:number[] = new Array(1,2,3,4,5)
Let arr3:Array<string> =new Array(“aaa”,”bbs”,”cccc”)
Let arr4:Array<boolean> = new Array(true,false,true)
Let arrtest:number[] = [1,2,true] //错误的不允许这样写
元组
Let x:[string,number] 键值对应类型的
字符串的两种类型
基本类型字符串:由单引号或者双引号括起来的一串字符串。
引用类型字符串:用new 实例化的 String类型
let lydia:string = '哈哈哈' //哈哈哈
let lydiaa:String = new String("lydia.com") // [String: lydia.com]
- typescript引用类型日期对象
a、不传任何参数 let datetime:Date = new Date() //打印当前日期时间
b、传递一个整数 let datetime2:Date = new Date(2000)
//时间是从1970-01-01 00: 00:00 开始算的 这里的2000就代表时间为 1970-01-01 00:00:02 (2秒)
c、传递一个字符串
Let datetime3:Date = new Date(‘2019-04-28 10:30:45’)
Let datetime4:Date = new Date(‘2019/04/28 10:30:45’)
Let datetime4:date = new Date(‘2019-04-28T10:30:45’) //T代表时间
上面3个打印出来的结果是一样的
let d:Date = new Date(year,month,day,hours,minutes,seconds,ms); //很少用找个
- typescript 正则使用
创建正则表达式也提供了两种方法,一种是才采用new 关键字,另一种是采用字面量 的方式。RegExp接收2个参数,第一个代表条件 第二个代表时修饰符
修饰符:g是全局修饰符,i是忽略大小写,m是多行模式。
- let reg = new RegExp(‘abc’ , ’gi’) //表示字符串规则里面要包好abc字符
- Let reg2 = /abc/gi
RegExp中的常用方法
RegExp对象包含两个方法:test( )和exec( )用于测试字符串匹配。
test(string) :在字符串中查找是否存在指定的正则表达式并返回布尔值,如果存在 则返回 true,不存在则返回 false。
exec(string) : 用于在字符串中查找指定正则表达式,如果 exec() 方法执行成功, 则返回包含该查找字符串的相关信息数组。如果执行失败,则返回 null。
例如:reg.test(‘sdkfjskdfjsabc’) 返回true
reg.exec(‘sdkfjskdfjsabc’’) [ abc, index: 11, input: 'sdkfjskdfjsabc’' ]
以上是我的部分typescript笔记,后面我还会写一个关于class和接口的笔记。敬请期待