1.typescript了解,配置等;
vue create <project name> 文件名不支持驼峰写法
Manually select features 手动配置
( ) Babel 转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。
( ) TypeScript// TypeScript是一个JavaScript(后缀.js)的超集(后缀.ts)包含并扩展了 JavaScript 的语法,需要被编译输出为 JavaScript在浏览器运行,目前较少人再用
( ) Progressive Web App (PWA) Support// 渐进式Web应用程序
( ) Router // vue-router(vue路由)
( ) Vuex // vuex(vue的状态管理模式)
( ) CSS Pre-processors // CSS 预处理器(如:less、sass)
( ) Linter / Formatter // 代码风格检查和格式化(如:ESlint)
( ) Unit Testing // 单元测试(unit tests)
( ) E2E Testing // e2e(end to end) 测试
2.typescript中的数据类型
1-1:typescript中的数据类型好处:使编写代码更规范,便于维护,增加类型验证;
typescript的数据类型分为:
布尔类型:boolean
数字类型:number
字符串类型:string
数组类型:array
元素类型:tuple
枚举类型:enum
任意类型:any
null和undefined
void类型
never类型
例子:
<!--1.字符串类型-->
// es5中(正常) ts中错误
let a = false
a = 12233
//ts 写法:
let a:boolean = true
a = false
<!--2.数组类型-->
// 数组类型。ts中定义数组两种方式
// 第一种方式:
let arry:number[] = [12,4]//定义的数组中的类型都是number类型
// 第二种:
let arry:Array<number> = [2,34]// 数组中的类型都是数字类型;
<!--3.元组类型(属于数组的类型,定义数组中多种类型)-->
let arry:[number,string] = [1,2,'2']
<!--4.枚举类型-->
// 用自然语言中含义清除的单词来代表它的每一个值
enum 枚举名:{
标识符[整型常数]
标识符[整型常数]
标识符[整型常数]
...
}
enum Flag:{
sucess: 1,
error: 2
}
let s:Flag = Flag.sucess;// s的类型是Flag类型,值是sucess,
// 如果sucess没有赋值,默认取的是下标;
<!--5.any类型(任意类型)-->
let str:any = 'any'
str = 23;
<!--6.null和undefined-->
// 其他(never)类型的子类型
var num:number;
console.log(num)// 报错
var num2:undefined;
console.log(num2)//正常
var num3:number|undefine;
console.log(num3)// 正常
<!--7.void类型-->
typescript中的void表示没有任何类型,一般用于定义方法的时候没有返回值
// 这个方法没有任何值
function run():void{
// ....
}
// 有返回值,指定返回的类型;
function run2():number{
return 123
}
<!--8.never类型-->
是其他类型(包含null和undefined)的子类新,代表从不会出现的值;
这意味着声明never的变量只能被never类型所赋值;
let a:never
a = 12//error
a= (() => {
throw new Error('error')// sucess
})
3.typescript 函数的定义
// es5函数声明
function run(){}
// 函数表达式
let run2 = function () {}
// ts函数声明
1).第一种函数声明:
function run():string {// 有返回值函数指定了string类型,返回值必须是string;
return '12344'
}
run()
2).第二种匿名函数
let fun2 = function():number{
return 1234;
}
3).ts中定义方法的传参数
function getInfo(name:string,age:number):string{// 有参数类型和返回值的类型
return `${name}+${age}`
}
getInfo('info',12)
4).ts函数的可选参数
// es5里面方法实参和形参可以不一样
// 但是ts中必须一样,如果比一样就需要配置可选参数
// ?代表可选参数(必须配置到实参的前面)
function getInfo(name:string,age?:number):string{
if (age) {
console.log(age)
} else {
console.log(name)
}
}
5).ts默认参数
function getInfo(name:string,age:number = 20):string{
}
console.log(getInfo('xiao li'))
6).剩余参数
function sum (..arg:number[]):number{
}
sum(1,2,34,5,6)
7).ts函数重载
typescript中的重载,通过为一个函数提供多个函数类型定义来试下多种功能的目的;
function getInfo (name:string);
function getInfo(age:number);
function getInfo(str:any):any{
if (typeof str == 'string') {
// 执行第一个函数
....
} else {
// number执行第二个函数
...
}
}
####4.typescript中的类
>
class Person{ name:string; constructor (name:string) {// 构造函数,实例化触发的方法 this.anme = name } run ():void { console.log('000) } } let p = new Person('xiao li')
// 1.ts 实现继承 extends super
// 2.ts 类的修饰符 定义属性的时候我们提供了三种
public:默认值,共有的,属性可以在当前类和字类和类的外面都可以访问; protected:保护类型,在当前类和子类里面可以访问; private:私有的,只能在当前类的里面访问;
// 3.静态属性 静态方法
class Person { name:string; static sex="man" constructor (name:string) { this.name = name } static print() {// 静态方法,没有方法直接调用类里面的方法; console.log(this.name)//error console.log(Person.sex) } } // 调用类的静态属性和方法 Person.priint() Person.sex
// ts 类的多态
多态:父类定义的方法不去实现,让继承它的字类取实现,每一个子类有不同的表现,多态属于继承;