TypeScript基本语法

想在自己电脑上快速演示下方代码?点击ts官方演练场:https://www.typescriptlang.org/play

变量声明:TypeScript 在 Javascript的基础上加入了静态类型检查功能,因此每一个变量都有固定的数据类型。

//string: 字符串,可以用单引号或双引号
let msg:string ='hello world'
//number: 数值,整数、浮点数都可以
let age:number = 18
//boolean: 布尔
let res:boolean = true
//any: 不确定类型,可以是任意类型
let type:any ='brynn'
//union: 联合类型,可以是多个指定类型中的一种
let many:string|number|boolean = 'brynn'
many = 18
//Object: 对象
let mes = {name:'brynn',age:18}
//Array: 数组,元素可以是任意其他类型,它有两种写法,如下:
let names:Array<string> = ['jack','brynn']  //Array<数据类型>
let ages:number[]=[16,18]  //数据类型[]

循环迭代 :for和while循环,并且为一些内置类型如Array等提供了快捷迭代语法(例如for in和for of)。

//定义数组
let names:string[] =['brynn','jack']

//for in 迭代器,遍历得到数组下标(角标)
for (const i in names){
    console.log(i + ':' + names[i])
}

//for of 迭代器,直接得到元素
for (const name of names){
    console.log('name',name)
}

函数:利用function关键字声明函数,并且支持可选参数、默认参数、箭头函数等特殊语法。

//无返回值函数,返回值void也可以省略
function sayHello(name: string): void{
    console.log('你好' + name + '!')
}
sayHello('brynn')

//有返回值函数
function sum(x: number,y: number): number{
    return x + y
}
const res = sum(10,5)
console.log('10+5=',res)

//箭头函数
let sayHi = (name:string)=>{
    console.log('你好,'+ name)
}
sayHi('brynn')

//可选参数,在参数名后面加 ? 表示参数是可选的
function sayHello(name?:string){
    //判断name是否有值,如果没有就给一个默认值
    name = name ? name :'陌生人'
    console.log('你好,' + name)
}
sayHello('brynn')
sayHello()

//参数默认值,在参数后面赋值,表示参数默认值
//如果调用者没有传参,则使用默认值
function sayHello(name: string = '陌生人'){
    console.log('你好,' + name)
}
sayHello('brynn')
sayHello()

类和接口:具备面向对象编程的基本语法,例如interface、class、enum等。也具备封装、继承、多态等面向对象基本特征。

枚举、接口、类:

//定义枚举
enum Msg{
    //这里也可以不进行赋值,因为会有默认值 0、1 以此类推
    HI = 'hi', 
    HELLO = 'hello'
}

//定义接口,抽象方法接受枚举参数
interface A {
    say(msg: Msg):void
}

//实现接口
class B implements A {
    say(msg:Msg):void {
        console.log(msg +', 我是B')    
    }
}

//初始化对象
let a:A = new B()
//或者
//let a:B =new B()
//调用方法,传递枚举参数
a.say(Msg.HI)

继承:

//定义矩形类
class Rectangle {
    //成员变量
    private width: number
    private length: number
    //构造函数 (没有函数名)
    constructor(width: number, length: number){
        this.width = width
        this.length = length    
    }
    //成员方法
    public area(): number{
        return this.width * this.length    
    }
}

//定义正方形类
class Square extends Rectangle{
    constructor(side: number) {
        //使用super关键字调用父类构造
        super(side,side)    
    }
}

let s = new Square(10)
console.log('正方形面积为:'+s.area())

模块开发:应用复杂时,我们可以把通用功能抽取到单独的ts文件中,每个文件都是一个模块(module)。模块可以相互加载,提高代码复用性。

文件 rectangle.ts   (导出文件):

//定义矩形类,并通过export导出
export class Rectangle {
    //成员变量
    public width: number
    public length: number
    //构造函数
    constructor(width: number,length: number) {
        this.width = width
        this.length = length    
    }
}

//定义工具方法,求矩形面积,并通过export导出
export function area(rec: Rectangle): number{
    return rec.width * rec.length
}

index.ts 文件 (引用上方的导出文件) :

//通过import语法导入,from后面写文件的地址
import { Rectangle , area } from '../rectangle'
//创建Rectangle对象
let r = new Rectangle(10,20)
//调用area方法
console.log('面积为:' + area(r))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/232715.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GPT-4 变懒了?官方回复

你是否注意到&#xff0c;最近使用 ChatGPT 的时候&#xff0c;当你向它提出一些问题&#xff0c;却得到的回应似乎变得简短而敷衍了&#xff1f;对于这一现象&#xff0c;ChatGPT 官方给出了回应。 译文&#xff1a;我们听到了你们所有关于 GPT4 变得更懒的反馈&#xff01;我…

智能优化算法应用:基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蜉蝣算法4.实验参数设定5.算法结果6.参考文献7.MA…

区块链实验室(30) - 区块链期刊:Distributed Ledger Technologies: Research and Practice

区块链涉及多学科及技术&#xff0c;众多期刊接收区块链文章。Distributed Ledger Technologies: Research and Practice是ACM出版集团的一本期刊。 Distributed Ledger Technologies: Research and Practice创刊历史很短&#xff0c;始于2022年&#xff0c;出版期数也不多。 载…

FastAPI之Hello World

世界上最著名的程序 from fastapi import FastAPIapp FastAPI()app.get("/") async def root():return {"message": "Hello World"}app.get("/hello/{name}") async def say_hello(name: str):return {"message": f"…

node笔记

文章目录 一、Node.js基础1. 认识Node.js01 nodejs的特性02 使用 Node.js 需要了解多少 JavaScript03 浏览器环境vs node环境 2. 开发环境搭建3. 模块、包、commonJS02 CommonJS规范03 modules模块化规范写法 4. Npm&Yarn01 npm的使用02 全局安装 nrm03 yarn使用 5. 内置模…

数据结构之归并排序及排序总结

目录 归并排序 归并排序的时间复杂度 排序的稳定性 排序总结 归并排序 归并排序大家只需要掌握其递归方法即可&#xff0c;非递归方法由于在某些特殊场景下边界难控制&#xff0c;我们一般很少使用非递归实现归并排序。那么归并排序的递归方法我们究竟是怎样实现呢&#xff…

报错:Parsed mapper file: ‘file mapper.xml 导致无法启动

报错 &#xff1a; Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. Registered plugin: com.github.yulichang.interceptor.MPJInterceptor3b2c8bda Parsed mapper file: file [/Mapper.xml] application无法启动 我这边产生原因是项…

JVM Optimization Learning(六)

目录 一、JVM Optimization 1、Shenandoah Shenandoah的使用方法 2、ZGC ZGC的版本更迭 ZGC的使用方法 ZGC的参数设置 3、JMH测试GC性能 一、JVM Optimization 1、Shenandoah Shenandoah是由Red Hat开发的一款低延迟的垃圾收集器&#xff0c;Shenandoah并发执行大部分…

Qt Creator设置IDE的字体、颜色、主题样式

Qt是一款开源的、跨平台的C开发框架&#xff0c;支持Windows、Linux、Mac系统&#xff0c;从1995发布第一版以来&#xff0c;发展迅猛&#xff0c;最开始是用于Nokia手机的Symbian(塞班)系统和应用程序开发&#xff0c;现在是用于嵌入式软件、桌面软件(比如WPS、VirtualBox)、A…

Tomcat部署开源站点JPress

前言 JPress使用Java开发&#xff0c;是我们常见的开源博客系统。JPress是一个开源的WordPress插件&#xff0c;它提供了一个简单而强大的方式来创建企业级站点。该插件包括许多特性&#xff0c;例如主题定制、页面构建器、性能优化、SEO、安全、电子商务和社交媒体整合等。使用…

Python实战演练之python实现神经网络模型算法

python实现神经网络模型算法 今天&#xff0c;厾罗和大家分享用Python实现神经网络模型算法&#xff0c;仅用于技术学习交流。 实现技巧 1.导入依赖库 主要是安装相关的依赖库。本文实现的环境为&#xff1a;python 3.7。 from __future__ import division import math …

【数值计算方法(黄明游)】迭代法的一般形式与收敛性定理

一、向量、矩阵范数与谱半径 【数值计算方法&#xff08;黄明游&#xff09;】解线性代数方程组的迭代法&#xff08;一&#xff09;&#xff1a;向量、矩阵范数与谱半径【理论到程序】 1. 向量范数 l 1 l_1 l1​ 范数&#xff08;曼哈顿范数&#xff09;&#xff1a; ∣ ∣…

MybatisPlus集成baomidou-dynamic,多数据源配置使用、MybatisPlus分页分组等操作示例

文章目录 MybatisPlus特性MybatisPlus支持数据库MybatisPlus 架构多数据源应用场景pom配置示例代码 MybatisPlus特性 无侵入&#xff1a;只做增强不做改变&#xff0c;引入它不会对现有工程产生影响&#xff0c;如丝般顺滑 损耗小&#xff1a;启动即会自动注入基本 CURD&#…

MySQL深入——8

Order by语句是如何工作的&#xff1f; 首先我们来创建一个表 CREATE TABLE t (id int(11) NOT NULL,city varchar(16) NOT NULL,name varchar(16) NOT NULL,age int(11) NOT NULL,addr varchar(128) DEFAULT NULL,PRIMARY KEY (id),KEY city (city) ) ENGINEInnoDB; 全字段…

JVS低代码表单引擎:数据校验与处理的先锋

随着信息技术的迅速发展&#xff0c;数据校验与处理已经成为了各类应用中不可或缺的一环。尤其是在涉及敏感信息&#xff0c;如密码处理时&#xff0c;其安全性和准确性显得尤为重要。JVS低代码表单引擎提供了强大的文本组件触发逻辑校验功能&#xff0c;它能够在用户填写数据的…

Python数据科学视频讲解:数据清洗、特征工程和数据可视化的注意事项

1.6 数据清洗、特征工程和数据可视化的注意事项 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.6节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应用的全流程…

【calcitonin ; 降钙素 ;降钙素原】

Parathyroid_Hormone -甲状旁腺激素 PTH &#xff1b; 特立帕肽&#xff1b;

【小米电脑管家】安装使用教程--非小米电脑

安装说明功能体验下载资源 Xiaomi HyperOS发布后&#xff0c;小米妙享电脑端独立版本也走向终点&#xff0c;最新的【小米电脑管家】将会内置妙享实现万物互联。那么本篇文章将分享非小米电脑用户如何绕过设备识别验证安装使用【小米电脑管家】实现万物互联 安装说明 1.解压文…

.NET Core 依赖注入 Microsoft.Extensions.DependencyInjection

文章目录 前言什么是依赖注入C# 使用依赖注入框架介绍 Microsoft.Extensions.DependencyInjectionNuget安装简单单例使用打印结果 自动装配举例自动装配测试用例打印结果自动装配执行顺序测试用例有歧义构造函数渐进式构造函数循环依赖 自动装配结论 手动装配手动注入别名注入 …

深入解析Spring Boot中的注解@PathVariable、@RequestParam、@RequestBody的正确使用

文章目录 1. 引言2. PathVariable&#xff1a;处理路径变量2.1 简介2.2 使用示例 3. RequestParam&#xff1a;处理请求参数3.1 简介3.2 使用示例 4. RequestBody&#xff1a;处理请求体4.1 简介4.2 使用示例 5. 多个注解的组合使用6. 参数绑定的原理6.1 HandlerMethodArgument…