首页 > 其他分享 >ts初步学习

ts初步学习

时间:2024-11-13 09:45:34浏览次数:1  
标签:学习 TypeScript name ts number 初步 let 类型 string

ts基础

  • 类型系统:变量和函数的类型声明(如 stringnumberboolean 等)。
  • 接口(Interfaces):如何使用接口定义数据结构。
  • 类(Classes):了解类的定义和使用,包括类的构造函数和方法。
  • 装饰器(Decorators):Angular 中的组件、模块等都是用装饰器定义的,如 @Component@NgModule 等。

1. 基础类型

TypeScript 支持以下常用的基础类型:

  • number:数字类型,包括整数和浮点数。

    let age: number = 30
    
  • string:字符串类型,用来存储文本。

    let name: string = "Alice";
    
  • boolean:布尔类型,值为 truefalse

    let isActive: boolean = true;
    
  • array:数组类型,可以指定数组中元素的类型。

    let numbers: number[] = [1, 2, 3];
    
  • tuple:元组类型,用于固定长度和类型的数组。

    let user: [string, number] = ["Alice", 30]
    
  • enum:枚举类型,定义一组命名常量。

    enum Color { Red, Green, Blue }
    let color: Color = Color.Green;
    
  • any:任意类型,适用于不确定的变量类型,但不建议频繁使用。

    let randomValue: any = "hello";
    randomValue = 5;  // 可以重新赋值为其他类型
    
  • void:无返回值,通常用于函数没有返回值的情况。

    function logMessage(): void {
      console.log("This is a message");
    }
    
  • null 和 undefined:表示变量为空或未定义。

    let u: undefined = undefined;
    let n: null = null;
    

2. 类型注解

可以在变量、参数和返回值上添加类型注解,便于代码提示和错误检查。

let name: string = "Alice";
function greet(name: string): string {
  return `Hello, ${name}`;
}

3. 接口(Interfaces)

接口用于定义对象的结构(即包含哪些属性和方法),有助于实现代码的重用和灵活性。

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

let alice: Person = {
  name: "Alice",
  age: 30,
  greet() {
    return `Hello, my name is ${this.name}`;
  }
};

4. 类(Classes)

TypeScript 支持面向对象编程,允许使用类和继承。类包含构造函数、属性和方法。

class Animal {
  name: string;

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

  move(distance: number = 0) {
    console.log(`${this.name} moved ${distance} meters.`);
  }
}

let dog = new Animal("Dog");
dog.move(10);
  • 访问修饰符

TypeScript 提供三种访问修饰符来控制类成员的访问权限:

  • public:公共的,默认修饰符,任何地方都可以访问。
  • private:私有的,只能在类内部访问。
  • protected:受保护的,允许在类内部及继承的子类中访问。
class Person {
  public name: string;
  private age: number;
  protected address: string;

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

5. 泛型(Generics)

泛型允许定义函数、类或接口时不指定类型,而在使用时再指定类型。这提高了代码的复用性。

function identity<T>(arg: T): T {
  return arg;
}

let output = identity<string>("Hello");  // T 被推断为 string

6. 类型推断

TypeScript 会根据代码自动推断变量的类型,如果没有显式声明类型,TypeScript 会根据赋值自动判断类型。

let x = 10; // TypeScript 自动推断 x 为 number

7. 联合类型(Union Types)

联合类型允许一个变量接受多种类型值,使用 | 符号定义。

let value: string | number;
value = "Hello";
value = 42;

8. 类型别名(Type Aliases)

使用 type 关键字可以为类型定义别名,便于复用。

type ID = string | number;
let userId: ID = "123";

9. 类型断言(Type Assertions)

类型断言告诉编译器某个值的具体类型,适用于我们比 TypeScript 更清楚变量的类型的情况。

let someValue: any = "This is a string";
let strLength: number = (someValue as string).length;

10. 装饰器(Decorators)

装饰器是 TypeScript 的高级特性,允许在类、方法或属性上应用一些元数据。Angular 中大量使用了装饰器来定义组件、模块等。

function log(target: any, key: string) {
  console.log(`${key} was called`);
}

class Person {
  @log
  greet() {
    console.log("Hello!");
  }
}

11. 模块和命名空间

  • 模块:TypeScript 支持 ES6 模块系统,可以通过 importexport 实现模块的导入和导出。

    // module.ts
    export const pi = 3.14;
    
    // main.ts
    import { pi } from './module';
    console.log(pi);
    
  • 命名空间:TypeScript 提供了命名空间(namespace)来组织代码,适用于大型应用。

    namespace Geometry {
      export function calculateArea(radius: number): number {
        return Math.PI * radius * radius;
      }
    }
    
    console.log(Geometry.calculateArea(5));
    

标签:学习,TypeScript,name,ts,number,初步,let,类型,string
From: https://www.cnblogs.com/dreaife/p/18543210

相关文章

  • Linux学习,clear命令
    Linuxclear命令在Linux和类Unix操作系统中用于清除终端屏幕上的所有内容,使终端看起来像是刚刚打开的一样。这个命令不会删除终端的历史记录或当前正在运行的命令,只是简单地清除屏幕上的显示内容。命令使用:在终端中输入 clear 并按下回车键即可执行该命令。注意事项:......
  • 计算机基础学习(非常详细)零基础入门到精通,收藏这篇就够了
    一、计算机概述计算机历史与发展:了解计算机的起源、发展简史,包括第一台电子计算机ENIAC的诞生、冯·诺依曼提出的“存储程序”原理等。计算机分类:巨型计算机、大中型计算机、小型计算机、微型计算机(如PC)、工作站等。计算机特点与应用:指令周期快、运算精度高、可靠性高......
  • Ubuntu 22.04 LTS 离线安装 Harbor v2.11 (附https认证,Trivy镜像扫描)
    Harbor介绍Harbor是一个开源的企业级DockerRegistry服务,它提供了一个安全、可信赖的仓库来存储和管理Docker镜像。Harbor翻译为中文名称为"庇护;居住;"。可以理解为是Docker镜像的"居住环境"或者是镜像的"庇护所"。Harbor最初由VMware公司开发,旨在解决企业级Docker镜像管理的......
  • Kruskal 重构树学习笔记+杂题
    图论系列:前言:相关题单:戳我一.最小瓶颈路唉,前面4个题单里其实有不少题是最小瓶颈路的做法啊。讲解摘自wiki。1.定义无向图\(G\)中\(x\)到\(y\)的最小瓶颈路是这样的一类简单路径,满足这条路径上的最大的边权在所有\(x\)到\(y\)的简单路径中是最小的。(对于下面这张......
  • 分布式事务~从seata实例来学习分布式事务
    部署dockerrun--name=seata1.4.2\--hostname=d67502e1d2ea\--mac-address=02:42:0a:ff:fe:02\--env=SEATA_IP=192.168.60.136\--env=SEATA_PORT=8091\--volume=/root/seata/seata-server-1.4.2/conf/registry.conf:/......
  • 工作学习笔记(七)Java的接口
    今天复习一下Java的基础知识,之前对于接口只有一个比较笼统的概念,经过一晚上的梳理,整理如下:它一种抽象类型,用于定义一组方法和常量。是Java多态性的重要体现。定义接口使用 interface 关键字来定义,例如 publicinterfaceMyInterface{} 。接口中的成员变量默认是 public......
  • C++基础学习6
    //练习://1.计算圆柱体体积和表面积//定义π=3.14159,输入半径r和高h。//公式://圆柱体积:体积=π*r^2*h//圆柱表面积:表面积=2*π*r*(r+h)////#define_CRT_SECURE_NO_WARNINGS1//#include<stdio.h>//#defineX3.14159//intmain()//{// floa......
  • [运维][Nginx]Nginx学习(1/5)--Nginx基础
    Nginx简介背景介绍Nginx一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】,同时也是一个【POP3/SMTP/IMAP代理服务器】,是由伊戈尔·赛索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是2004年10月4号发布的0.1.0版本。另外值得一提的是伊戈尔·赛索耶夫将Nginx的源码......
  • C++黑马程序员网课:我的学习心得与笔记(更新中)
    前言:笔记来源于C++黑马程序员网课视频:https://www.bilibili.com/video/BV1et411b73Z在此发布笔记,只是为方便学习,不做其他用途,原作者为黑马程序员。1.C++基础1.1用VisualStudio写C++程序输出HelloWorld1.1.1下载并配置VisualStudio环境1.1.2用VisualStudio写C......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现五
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......