TypeScript初识🧐2020-09-26

课程地址 :https://www.bilibili.com/video/BV14Z4y1u7pi?p=148

1. 安装解析器

Typescript 是【微软】开发的,把所有的变量都提前写好 type。
比如:let name : String = "哈哈哈",Type + script

Typescript 是 JavaScrip 的一个超集

底层还是得解析翻译成JavaScrip。
解析器就叫 typescript (小写)
cnpm i -g typescript

2. 安装简化执行 TS
3. vscode 断点调试
4. 数组

存储多个数据
内置对象:所以通过 . 语法
常用属性: songs.length;
常用方法:songs.pushforEachsome

let names: string[] = ['a', 'b', 'c']   // 推荐
let names: string[] = new Array('a', 'b', 'c') // 不推荐
//为数组添加最后一个新成员
names.push = 'new1 name';
let names[names.length] = 'new name'
//遍历数组
for(let i:number=0; i<=names.length-1; i++) {
  console.log(names[i]);  
}
//简化遍历数组
for(let i:number=0; i<names.length; i++) {
  console.log(names[i]);
}
//forEach
names.forEach((item, index) => {    //函数作为参数,回调函数
  console.log(item, index);  //如果有三个元素,这个回调函数会被调用三次,所以就会打印三次
})

//最大值
let max: number = 0;
for (let i: number = 0; i < sum.length; i++) {
    if (sum[i] > max) {
        max = sum[i];
    }
}
// console.log(max)

//求和
let total: number = 0;
for (let i: number = 0; i < sum.length; i++) {
    total += sum[i];
}
// console.log(total);

//数组中,将不为 0 的元素取出,组成新的数组
let newArray: number[] = [];
for (let i: number = 0; i < sum.length; i++) {
    if (sum[i] != 0) {
        // newArray.push(sum[i]);
        newArray[newArray.length] = sum[i];
    }
}
console.log(newArray)
let has: boolean = sum.some((item, index) => {
    if (item > 10) {
        return true;//找到满足条件元素,通过返回 true 停止后续遍历
    }
    return false;//没有找到元素,通过 false 来继续后面的循环
})
console.log(has)
some

forEach 必须循环完所有项,不能 break,不能 return
如果找一个数组中有没有某个值时,找到就停止 ⏹ ,就要用 some

const array = [1, 2, 3, 4, 5];

// checks whether an element is even
const even = (element) => element % 2 === 0;

console.log(array.some(even));
// expected output: true


let odd: boolean = sum.some(value => {
    if (value % 2 === 0) return true
    return false
})
console.log("odd: " + odd)

function checkAdult(age) {
    return age >= 18;
}
console.log(array.some(checkAdult))
浅拷贝一个数组
var shallowCopy = fruits.slice(); // this is how to make a copy 
// ["Strawberry", "Mango"]

slice 删掉某些元素,这里是全部删除,返回整个 array,相当于拷贝。
删除还可以用改变数组长度,比如

let fruits = ['a', 'b', 'c']
fruits.length = 2 // c就不在了
函数

声明一次,但可以调用任意多次的一段代码
增加代码复用,减少重复代码,提升开发效率

函数参数:增加了函数的灵活性,通用性。针对相同的功能,能够适应更多的数据(值)

形式参数形参和实参的区别
英文名字不同:形参是parameter,实参是argument

返回值
function getTotal(nums: number[]): number {//声明返回值类型
    let sum: number = 0
    for (let i: number = 0; i < nums.length; i++) {
        sum += nums[i]
    }
    console.log(sum)
    return sum//指定返回值
}
console.log(getTotal(sum) + getTotal(sum))

//求三角形面积
function getArea(hight: number, width: number): number {
    let area: number = 1 / 2 * hight * width; //不要忘了这个地方的类型number
    return area;
    // return 1/2 * width * hight;
}
console.log(getArea(10, 10))
对象

一组相关属性和方法的集合,并且是无序的。
无序键值对的集合

对象的来源:

  1. 自己创建
  2. 编辑语言自带(内置对象) 或 第三方(像 vue 里面的 api)
    内置对象:TS/JS 自带的一些基础对象,提供了 TS 开发时所需的基础和必要的能力,比如数组
对象的类型注解

提前设计好对象的结构

//对象注解
let person: {
    name: string; //分号可以省略
    age: number;
    sayHi: () => void;
    sing: (name: string) => void;
    sum: (num1: number, num2: number) => number;
}
//对象
person = {
    name: 'John',
    age: 34,
    sayHi: () => {
        console.log('Hello')
    },
    sing: (name) => {
        console.log(`歌曲名称:${name}`)
    },
    sum: (num1, num2) => { return num1 + num2 }
}
接口:为对象的类型注解命名,并未代码建立契约来约束对象的结构

接口名称约定以 I 开头

//接口
interface IPerson {  //没有 :
    name: string; //分号可以省略
    age: number;
    sayHi: () => void;
    sing: (name: string) => void;
    sum: (num1: number, num2: number) => number;
}
//对象
let person1: IPerson = {
    name: 'John',
    age: 34,
    sayHi: () => {
        console.log('Hello')
    },
    sing: (name) => {
        console.log(`歌曲名称:${name}`)
    },
    sum: (num1, num2) => { return num1 + num2 }
}

访问对象属性 和 获取对象中的方法【 并调用 】

person1.age = 19
person1.sing('对对对') //调用方法




©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。