首页 > 其他分享 >Typescript学习笔记总结

Typescript学习笔记总结

时间:2023-07-16 22:32:43浏览次数:36  
标签:总结 Typescript name age number 笔记 Person 接口 string

Typescript是一种由微软开发的开源编程语言,它是JavaScript的超集,意味着它包含了JavaScript的所有特性,同时还提供了一些额外的功能和类型检查。Typescript的目标是提高JavaScript代码的可读性、可维护性和可扩展性,同时还能够在编译时检测出一些常见的错误。

在本文中,我们将详细介绍Typescript的知识,并使用相关代码辅助介绍。

一、基础类型

Typescript支持JavaScript的所有基础类型,包括number、string、boolean、null、undefined和symbol。此外,Typescript还提供了一些额外的类型,如any、void、never和unknown。

  1. number类型

number类型表示数字,可以是整数或浮点数。例如:

let num: number = 10;
let floatNum: number = 3.14;
  1. string类型

string类型表示字符串,可以使用单引号或双引号。例如:

let str: string = 'hello';
let anotherStr: string = "world";
  1. boolean类型

boolean类型表示布尔值,只有两个值:true和false。例如:

let isTrue: boolean = true;
let isFalse: boolean = false;
  1. null和undefined类型

null和undefined类型表示空值,它们是所有类型的子类型。例如:

let n: null = null;
let u: undefined = undefined;
  1. any类型

any类型表示任意类型,可以赋值给任何变量。例如:

let anyValue: any = 'hello';
anyValue = 10;
  1. void类型

void类型表示没有返回值的函数。例如:

function sayHello(): void {
  console.log('hello');
}
  1. never类型

never类型表示永远不会返回的函数或抛出异常。例如:

function throwError(): never {
  throw new Error('error');
}
  1. unknown类型

unknown类型表示未知类型,类似于any类型,但是不能直接赋值给其他类型。例如:

let unknownValue: unknown = 'hello';
let strValue: string = unknownValue; // 报错
二、变量声明

在Typescript中,可以使用let、const和var关键字声明变量。其中,let和const是ES6新增的关键字,var是ES5中的关键字。

  1. let关键字

let关键字用于声明块级作用域的变量。例如:

if (true) {
  let x = 10;
}
console.log(x); // 报错,x未定义
  1. const关键字

const关键字用于声明常量,一旦赋值就不能再修改。例如:

const PI = 3.14;
PI = 3; // 报错,常量不能修改
  1. var关键字

var关键字用于声明全局作用域或函数作用域的变量。例如:

function test() {
  var x = 10;
}
console.log(x); // 报错,x未定义
三、函数

在Typescript中,可以使用function关键字定义函数,也可以使用箭头函数。函数可以有参数和返回值,可以使用类型注解来指定参数和返回值的类型。

  1. 函数定义
function add(x: number, y: number): number {
  return x + y;
}

const add = (x: number, y: number): number => {
  return x + y;
}
  1. 可选参数

可以使用问号来表示可选参数。例如:

function sayHello(name?: string): void {
  if (name) {
    console.log(`hello, ${name}`);
  } else {
    console.log('hello');
  }
}
  1. 默认参数

可以使用等号来表示默认参数。例如:

function sayHello(name: string = 'world'): void {
  console.log(`hello, ${name}`);
}
  1. 剩余参数

可以使用三个点来表示剩余参数。例如:

function add(...nums: number[]): number {
  return nums.reduce((prev, curr) => prev + curr, 0);
}
四、类

在Typescript中,可以使用class关键字定义类。类可以有属性和方法,可以使用访问修饰符来控制属性和方法的访问权限。

  1. 类定义
class Person {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  sayHello(): void {
    console.log(`hello, my name is ${this.name}, I'm ${this.age} years old`);
  }
}
  1. 继承

可以使用extends关键字来实现继承。例如:

class Student extends Person {
  grade: number;

  constructor(name: string, age: number, grade: number) {
    super(name, age);
    this.grade = grade;
  }

  study(): void {
    console.log(`I'm studying in grade ${this.grade}`);
  }
}
  1. 访问修饰符

可以使用public、private和protected关键字来控制属性和方法的访问权限。例如:

class Person {
  public name: string;
  private age: number;
  protected gender: string;

  constructor(name: string, age: number, gender: string) {
    this.name = name;
    this.age = age;
    this.gender = gender;
  }

  sayHello(): void {
    console.log(`hello, my name is ${this.name}, I'm ${this.age} years old`);
  }
}

class Student extends Person {
  grade: number;

  constructor(name: string, age: number, gender: string, grade: number) {
    super(name, age, gender);
    this.grade = grade;
  }

  study(): void {
    console.log(`I'm studying in grade ${this.grade}`);
  }

  showGender(): void {
    console.log(`My gender is ${this.gender}`); // 可以访问父类的protected属性
  }
}

const person = new Person('Tom', 20, 'male');
console.log(person.name); // 可以访问public属性
console.log(person.age); // 报错,不能访问private属性

const student = new Student('Jerry', 18, 'male', 1);
console.log(student.gender); // 报错,不能访问protected属性
student.showGender(); // 可以访问protected属性
五、接口

在TypeScript中,可以使用interface关键字定义接口。接口用于描述对象的形状,可以包含属性、方法和索引签名。

  1. 接口定义

在TypeScript中,可以使用interface关键字定义接口。接口用于描述对象的形状,可以包含属性、方法和索引签名。例如,下面的代码定义了一个Person接口,它包含一个name属性、一个age属性和一个sayHello方法:

interface Person {
  name: string;
  age: number;
  sayHello(): void;
}

const person: Person = {
  name: 'Tom',
  age: 20,
  sayHello() {
    console.log(`hello, my name is ${this.name}, I'm ${this.age} years old`);
  }
}

在上面的代码中,我们定义了一个Person接口,它包含一个name属性、一个age属性和一个sayHello方法。然后我们创建了一个person对象,它符合Person接口的定义,因此可以将它赋值给一个类型为Person的变量。

  1. 可选属性

有时候我们并不需要一个对象的所有属性都是必须的,这时可以使用问号来表示可选属性。例如:

interface Person {
  name: string;
  age?: number;
}

const person1: Person = {
  name: 'Tom'
}

const person2: Person = {
  name: 'Jerry',
  age: 18
}

在上面的代码中,我们定义了一个Person接口,它包含一个name属性和一个可选的age属性。然后我们创建了两个person对象,person1只包含name属性,而person2包含name和age属性。

  1. 只读属性

有时候我们希望一个对象的某些属性只能在创建时被赋值,不能被修改。这时可以使用readonly关键字来定义只读属性。例如:

interface Person {
  readonly id: number;
  name: string;
}

const person: Person = {
  id: 1,
  name: 'Tom'
}

person.id = 2; // error: Cannot assign to 'id' because it is a read-only property.

在上面的代码中,我们定义了一个Person接口,它包含一个只读的id属性和一个name属性。然后我们创建了一个person对象,它包含一个id和一个name属性。由于id属性是只读的,因此我们不能在后面修改它的值。

  1. 继承接口

在TypeScript中,接口可以继承其他接口,从而扩展接口的定义。例如:

interface Person {
  name: string;
  age: number;
}

interface Student extends Person {
  grade: number;
}

const student: Student = {
  name: 'Tom',
  age: 20,
  grade: 3
}

在上面的代码中,我们定义了一个Person接口,它包含一个name属性和一个age属性。然后我们定义了一个Student接口,它继承了Person接口,并添加了一个grade属性。最后我们创建了一个student对象,它符合Student接口的定义,因此可以将它赋值给一个类型为Student的变量。

  1. 函数类型接口

在TypeScript中,接口不仅可以描述对象的形状,还可以描述函数的形状。例如:

interface Add {
  (x: number, y: number): number;
}

const add: Add = (x, y) => x + y;

在上面的代码中,我们定义了一个Add接口,它描述了一个函数类型,它接受两个参数x和y,返回一个数字类型的值。然后我们定义了一个add函数,它符合Add接口的定义,因此可以将它赋值给一个类型为Add的变量。

  1. 索引类型接口

在TypeScript中,接口还可以描述对象的索引类型。例如:

interface StringArray {
  [index: number]: string;
}

const arr: StringArray = ['hello', 'world'];

在上面的代码中,我们定义了一个StringArray接口,它描述了一个索引类型,它的索引是数字类型,值是字符串类型。然后我们创建了一个arr数组,它符合StringArray接口的定义,因此可以将它赋值给一个类型为StringArray的变量。

六、总结

TypeScript是一种由微软开发的开源编程语言,它是JavaScript的超集,可以编译成纯JavaScript代码。在TypeScript中,可以使用interface关键字定义接口,接口用于描述对象的形状,可以包含属性、方法和索引签名。接口还可以继承其他接口,从而扩展接口的定义。接口不仅可以描述对象的形状,还可以描述函数的形状和对象的索引类型。通过使用TypeScript的类型检查功能,可以提高代码的可维护性和可读性。

标签:总结,Typescript,name,age,number,笔记,Person,接口,string
From: https://blog.51cto.com/u_16131726/6740734

相关文章

  • [笔记]组成原理_输入/输出系统
    I/O接口I/O接口的功能IO接口的主要功能有:进行地址译码和设备选择。(CPU送来选择外设的地址码后,接口必须对地址进行译码,以产生设备选择信息,使主机能和指定外设交换信息。)实现主机和外设的通信联络控制。(解决主机与外设时序配合问题,协调不同工作速度的外设和主机之间交换信息,以......
  • 7.16总结
    昨晚睡得很早,起床后头疼的症状也缓解了,然后起床在床上刷了会视频,起来后将pta弄到了1500分,上午还有人问我题,我就讲了一下,这对我来说也是复习提升吧。中午自己炒了个菜,手法很生疏,做的很失败,但也能吃,吃完之后刷视频,看了一会javaweb知识,更新了sql的笔记,快整理完了,整理的也是简单的常用......
  • 学校招生报名小程序开发笔记(一)
    背景这是一个以报名为核心的职业学校招生小程序,目的是方便想要系统学习技能,入门某项技能或者领域的初高中毕业生,了解该学校的基本情况及各个专业,并提供报名路径,致力于技能型人才培养功能规划主要功能包括专业介绍,专业选择,资料填报,查看审核结果,学校概况,招生指南,入学须知,就业升学,多彩......
  • 每日总结2023年7月16日
    今日学习:批处理的学习;java连接池C3P0的连接。遇到的问题:今天在做批处理的时候发现一个问题,就是我的MySQL数据表好像只能存储1000条数据,那么如果数据量远大于此我该如何解决?明天的计划:开启Spring学习。......
  • 第一一周每周总结
    第一周:学习基础知识和概念在第一周的学习中,我着重探索了大数据技术的基本知识和概念。首先,我了解了大数据的定义和特点。我理解到大数据不仅仅是指数据量庞大,还包括数据的多样性、速度和价值。我开始思考大数据是如何改变传统数据处理和分析方法的,并对其在各行各业中的应用进行了......
  • ASP.NET Core学习笔记
    ASP.NETCore教程:https://www.bilibili.com/video/BV1Kk4y117Xy/?p=2&spm_id_from=pageDriver&vd_source=34dc5215532143d76607ef8957c72691的笔记ASP.NETCore启动流程ASP.NETCoreWeb应用程序最初作为控制台应用程序启动,Main()方法是应用程序的入口点。因此,当我们执行AS......
  • 7.15晚模拟赛总结
    暑假第一次模拟赛  先开T1,发现样例看不懂(后来发现是题目的样例解释写错了)自信打开T2,发现没有任何思路(赛后听mhd大佬说了人类智慧双指针,茅厕顿开!!),又跳过T3,发现坐过原题,但是只记得一点点思路了,后悔ING了十几分钟后开始打,打炸了,调了好久才过样例,结果是有致命思路错误,只有20ptsT4......
  • 网络流阶段性总结
    网络流,一种建图的艺术显然我没有那种艺术细胞(悲$\$最大流dinic+当前弧优化$\$P1231教辅的组成对于书本的点数,要控制经过点的流量因此拆点#include<bits/stdc++.h>usingnamespacestd;constintN=4e4+10,M=1e5+10,inf=1e9;intn1,n2,n3,m1,m2,s,t;intcur[N]......
  • JUC笔记
    JUC并发编程狂神说:https://space.bilibili.com/952564491.什么是JUCJUC就是java.util.concurrent下面的类包,专门用于多线程的开发。源码+官方文档面试高频问!java.util工具包业务:无法通过普通的线程代码Thread实现。Runnable没有返回值、效率相比于Callable相对较......
  • 暑假第一周总结
    周一:今天没有学习,在家玩了一天周二:今天看网课复习了一下python周三:今天进行python环境配置周四:今天玩了一天,没有学习。周五:今天进行数据库的连接。周六:今天继续连接数据库又看了一下爬虫的概念周日:今天玩了一天没有学习。......