Typescript学习-不能光干看文档,比较重要的地方做下笔记还是有必要的

理解和使用 TypeScript 中的接口 JavaScript 为开发人员提供了极大的灵活性。初始化为整数的变量可以在运行时分配一个函数字面量。JavaScript 中的变量类型是不可预测的。正如您在下面的示例中看到的, a初始化为整数,然后分配一个函数字面量:var a = 2}让我们考虑一下建造特斯拉 Model S 汽车的实施计划。十名特斯拉工程师构建了他们的原型模型。在实施之前没有制定规范,所以工程师们都提出了自己的一套规范和实施模型。其中一个原型能够向用户展示汽车充电细节,而另一个原型则配备了轮胎监控系统。 阅读详情

类型-unknown和any

unkonwn和any的区别:any类型的变量可以赋值给其他啊任意类型变量;unknown类型的变量不能赋值给其他类型的变量,但可以赋值给unknown类型和any类型;(注意:any类型在开发中能不用就尽量不要用)

//unknown
let a:unknown;
a='3'//ok
a=3;//ok
let b:string=a;//error:不能将类型“unknown”分配给类型“string”
let c:any=a;//ok

//any
let a:any;
a='3'//ok
a=3;//ok
let b:string=a;//ok

类型-元组

元组:长度和类型固定的数组就是元组

let arr:[string,number]=['1',2];
arr[0]=3;//error:不能将类型“number”分配给类型“string”
let arr2:[string,number]=['1'];//error:不能将类型“[string]”分配给类型“[string, number]”。源具有 1 个元素,但目标需要 2 个

类-继承实现

//类继承的实现:用到两个关键字(extends、super)
class Person{
    name:string;
    age:number;
    constructor(name:string,age:number){
        this.name=name;
        this.age=age;
    }
    sayHello=function():void{
        console.log(`大家好,我叫${this.name},今年${this.age}岁了!`)
    };
}

class Female extends Person{
    constructor(name:string,age:number){
        super(name,age);//super作用:显示地调用父类的构造函数
    }
    //重写sayHello方法
    sayHello=function():void{
        console.log(`大家好,我是个小女孩,我叫${this.name},今年${this.age}岁了!`)
    };
}

let p=new Female("张三",22);
p.sayHello();

接口-只读属性

只读属性,顾名思义,属性是不可修改的

interface Point{
    readonly x:number,
    readonly y:number
}
let p:Point={x:20,y:30};
// p.x=50;//error:无法分配到 "x" ,因为它是只读属性

只读数组 ReadonlyArray<T>,需要特别注意的是,除了数组不能被修改之外,并且它不能直接赋值给其他普通数组对象。如果想要实现赋值,则需要使用类型断言。可以将as语法理解成java或C#中的强制类型转换

let readonlyArr:ReadonlyArray<string>=['1','2','3'];
let readonlyArr2:ReadonlyArray<string> =readonlyArr;//ok
let otherArr:Array<string> =readonlyArr;//error:类型 "readonly string[]" 为 "readonly",不能分配给可变类型 "string[]"
let otherArr:Array<string> =readonlyArr as Array<string>;//使用类型断言

const和readonly:
二者定义的对象变量,属性是可以进行修改的,但是不能对对象进行重新赋值
最简单判断该用readonly还是const的方法是看要把它做为变量使用还是做为一个属性。 做为变量使用的话用 const,若做为属性则使用readonly

//const
const v1={x:1,y:2};
v1.x=4;//ok
v1={x:2,y:3};//error:无法分配到 "v1" ,因为它是常数
//readonly
interface Test{
    readonly obj:{x1:string,x2:string}
}
let t:Test={obj:{x1:'1',x2:'2'}};
t.obj.x1='3';//ok
t.obj={x1:'2',x2:'3'};//error:无法分配到 "obj" ,因为它是只读属性

接口-额外的属性检查

当传了一个包含定义之外的属性的时候,此时会报错

interface Params{
    x1:number,
    x2:number
}
function Sum(p:Params):number{
    return p.x1+p.x2;
}
Sum({x1:2,x2:3});//ok
Sum({x1:2,x2:3,x3:4});//error:类型“{ x1: number; x2: number; x3: number; }”的参数不能赋给类型“Params”的参数。对象文字可以只指定已知属性,并且“x3”不在类型“Params”中

//那么对于这种额外属性,这么绕过ts的类型检测呢?有两种解决办法
//第一种方法:中间变量
let tempObj={x1:2,x2:3,x3:4};//因为这里没有指定类型,所以不会进行类型检查
Sum(tempObj);//ok
//第二种方法:类型断言
Sum({x1:2,x2:3,x3:4} as Params)//ok

ts配置文件

tsconfig.json是一个JSON文件,添加配置文件后,只需只需 tsc 命令即可完成对整个项目的编译

配置选项:

include
  • 定义希望被编译文件所在的目录
  • 默认值:["**/*"]

示例:

  "include":["src/**/*", "tests/**/*"]

上述示例中,所有src目录和tests目录下的文件都会被编译

exclude
  • 定义需要排除在外的目录
  • 默认值:[“node_modules”, “bower_components”, “jspm_packages”]

示例:

  "exclude": ["./src/hello/**/*"]

上述示例中,src下hello目录下的文件都不会被编译

extends
  • 定义被继承的配置文件

示例:

"extends": "./configs/base"

上述示例中,当前配置文件中会自动包含config目录下base.json中的所有配置信息

files
  • 指定被编译文件的列表,只有需要编译的文件少时才会用到

示例:

"files": [
    "core.ts",
    "sys.ts",
    "types.ts",
    "scanner.ts",
    "parser.ts",
    "utilities.ts",
    "binder.ts",
    "checker.ts",
    "tsc.ts"
  ]
  • 列表中的文件都会被TS编译器所编译
compilerOptions
  • 编译选项是配置文件中非常重要也比较复杂的配置选项
  • 在compilerOptions中包含多个子选项,用来完成对编译的配置

项目选项:

  • target

    • 设置ts代码编译的目标版本

    • 可选值:

      • ES3(默认)、ES5、ES6/ES2015、ES7/ES2016、ES2017、ES2018、ES2019、ES2020、ESNext
    • 示例:

      • "compilerOptions": {
            "target": "ES6"
        }
        
    • 如上设置,我们所编写的ts代码将会被编译为ES6版本的js代码

  • lib

    • 指定代码运行时所包含的库(宿主环境)

    • 可选值:

      • ES5、ES6/ES2015、ES7/ES2016、ES2017、ES2018、ES2019、ES2020、ESNext、DOM、WebWorker、ScriptHost …
    • 示例:

      • "compilerOptions": {
            "target": "ES6",
            "lib": ["ES6", "DOM"],
            "outDir": "dist",
            "outFile": "dist/aa.js"
        }
        
  • module

    • 设置编译后代码使用的模块化系统

    • 可选值:

      • CommonJS、UMD、AMD、System、ES2020、ESNext、None
    • 示例:

      • "compilerOptions": {
            "module": "CommonJS"
        }
        
  • outDir

    • 编译后文件的所在目录

    • 默认情况下,编译后的js文件会和ts文件位于相同的目录,设置outDir后可以改变编译后文件的位置

    • 示例:

      • "compilerOptions": {
            "outDir": "dist"
        }
        
      • 设置后编译后的js文件将会生成到dist目录

  • outFile

    • 将所有的文件编译为一个js文件

    • 默认会将所有的编写在全局作用域中的代码合并为一个js文件,如果module制定了None、System或AMD则会将模块一起合并到文件之中

    • 示例:

      • "compilerOptions": {
            "outFile": "dist/app.js"
        }
        
  • rootDir

    • 指定代码的根目录,默认情况下编译后文件的目录结构会以最长的公共目录为根目录,通过rootDir可以手动指定根目录

    • 示例:

      • "compilerOptions": {
            "rootDir": "./src"
        }
        
  • allowJs

    • 是否对js文件编译
  • checkJs

    • 是否对js文件进行检查

    • 示例:

      • "compilerOptions": {
            "allowJs": true,
            "checkJs": true
        }
        
  • removeComments

    • 是否删除注释
    • 默认值:false
  • noEmit

    • 不对代码进行编译
    • 默认值:false
  • sourceMap

    • 是否生成sourceMap
    • 默认值:false
  • 严格检查

    • strict
      • 启用所有的严格检查,默认值为true,设置后相当于开启了所有的严格检查
    • alwaysStrict js严格模式
      • 总是以严格模式对代码进行编译
    • noImplicitAny
      • 禁止隐式的any类型
    • noImplicitThis
      • 禁止类型不明确的this
    • strictBindCallApply
      • 严格检查bind、call和apply的参数列表
    • strictFunctionTypes
      • 严格检查函数的类型
    • strictNullChecks
      • 严格的空值检查
    • strictPropertyInitialization
      • 严格检查属性是否初始化
  • 额外检查

    • noFallthroughCasesInSwitch
      • 检查switch语句包含正确的break
    • noImplicitReturns
      • 检查函数没有隐式的返回值
    • noUnusedLocals
      • 检查未使用的局部变量
    • noUnusedParameters
      • 检查未使用的参数
  • 高级

    • allowUnreachableCode
      • 检查不可达代码
      • 可选值:
        • true,忽略不可达代码
        • false,不可达代码将引起错误
    • noEmitOnError
      • 有错误的情况下不进行编译
      • 默认值:false
TypeScript学习文档 ts学习教程,一些基础的语法。 阅读详情

相关推荐

Unity3D Lua与C#的相互调用与性能剖析详解

在游戏开发中,经常会遇到Lua与C#之间的相互调用的情况。本文将详细介绍Unity3D中Lua与C#的相互调用的方式,并对其性能进行剖析。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!一、Lua与C#的相互调用方式Lua调用C#在Unity3D中,可以通过Lua调用C#的方式来实现Lua与C#的相互调用。具体步骤如下:(1)首先需要在Unity3D项目中导入Lua的相关库,例如tolua或者xlua。

weixin_49669470的博客 1211

Broadcast Channel API 提供了一种简单的同源页面间广播通信机制,对于需要在多个标签页、窗口或iframe之间同步状态非常有用

摘要(148字) BroadcastChannel API 支持同源页面间的一对多广播通信,适用于标签页同步、跨iframe通信等场景。核心流程包括创建同名频道、postMessage()发送消息、监听message事件接收消息及关闭频道。相比postMessage和localStorage方案,其API更简洁但不支持跨域。使用时需注意:消息不回传发送方、及时关闭频道、检查兼容性。该API为多页面状态同步提供了高效解决方案,适合同源环境下的简单广播需求。

油墨香^-^的博客 1151

新手必看:如何用T265和ROS实现无人机室内精准定位(附PX4参数配置)

本文详细介绍了如何使用Intel Realsense T265和ROS实现无人机室内精准定位,包括硬件准备、ROS数据流架构设计、PX4参数配置及系统验证。特别针对视觉SLAM技术在室内环境中的应用,提供了从零搭建到进阶优化的全流程解析,适合无人机开发新手快速上手。

weixin_30642561的博客 404

TypeScript基础

定义函数、接口和类的时候,在名称后面加上< >来定义泛型,< >里面加上泛型的名称// 泛型// 定义函数、接口和类的时候不指定类型,使用的时候再定义类型return arg// 根据传入的类型决定返回的类型// res等于number类型的123// res2等于string类型的123创建了一个名称为T的泛型,「T到底是什么类型不知道,可能是任何一种,具体是什么要看使用时传入的类型。arg: T 使用泛型T作为入参的类型将泛型T作为函数返回值定义多个泛型// 定义多个泛型。

前端界的小学生 3093

若依Vue整合积木报表实战:Token安全校验全流程解析

本文详细解析了在若依Vue后台系统中安全集成积木报表的全流程,重点阐述了Token安全校验的核心机制。通过前端菜单配置、Token传递、后端权限拦截及自定义Token服务实现,构建了一套完整的企业级报表访问安全防线,确保核心业务数据的安全可控。

t8u9v0的博客 576

2023年LitCTF web组wp

1、导弹迷踪2、1zjs3、php是世界上最好的语言!!4、Ping5、我Flag呢?7、作业管理系统8、Vim yyds10、这是什么?SQL!注一下!11、Flag点击就送!12、就当无事发生13、彩蛋。

m0_74160536的博客 1587

axios 1.4.0 ts 自定义添加配置

【代码】axios 1.4.0 ts 自定义添加配置。

hafhcfgjb的博客 1205

港口集装箱码头运营FlexSim仿真

列队4中的集装箱会根据不同类型的集装箱会放置在不同的堆场,因此根据前面对集装箱设置的标签Type的数值不同,设置不同的发送端口。集装箱到达列队3后,会有70%的集装箱到达堆场,30%的集装箱运出港口,因此在Queue列队3的Flow界面设置按照百分比发送端口,其中70%发送到端口1,即发送到列队4等待进入堆场,30%发送到端口2,即发送至出闸口。通过上述对比表格可以看出,当集卡数量在10的时候,岸桥和场桥的设备利用率达到了最高,当集卡数量为12的时候场桥1和场桥3的利用率有所下降,因此综合考虑。

m0_72514516的博客 1330

自学TS(二)

接口时一系列抽象方法的声明,是一些方法特征的集合,这些方法应该都是抽象的,需要具体的类去实现,然后第三方就可以通过这组抽象方法去调用,让具体的类执行具体的方法。TypeScript中的接口是一个非常灵活的概念,除了可用于对类的一部分行为进行抽象以外,也常用于对对象的形状(Shape)进行描述。age: 25上述例子中,我们定义了一个接口Cat,接着定义了一个变量tom,他的类型是Cat。这样我们就约束了tom的形状必须和接口Cat一致。

m0_37328953的博客 1187

Open3D 点云DBSCAN聚类算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,能够识别任意形状的聚类,并处理噪声数据。

纵马踏花向自由 1833

[QMT量化交易小白入门]-三十七、QMT中如何使用类似于通达信中的VBA函数(量化python代码解析)

这段代码主要围绕着在QMT环境中实现类似通达信VBA函数的功能展开,核心功能是基于RSI指标来判断股票的买卖时机,并根据持仓情况进行相应的交易操作。class G():passg = G()这里定义了一个空类G,并创建了该类的实例g。这个实例g将作为全局变量来存储一些在整个程序运行过程中需要共享的数据,例如除复权类型、股票代码、目标数量等。1、使用VBA开发策略时,参数固化的问题会带来一些限制,比如无法修改MA函数的周期参数,只能使用固定周期。

木头大左的博客 1690

作为前端,有必要去学习 TypeScript 吗?

有必要学习。官方文档解释说,。这里做一个简单的类比,我们在实践开发中,通常使用ES6开发,并且编译成ES5的代码给浏览器执行。所以ES6和ts扮演的角色比较类似。之所以说是JavaScript的超集,就是在JavaScript的语法基础上,新增了更多的语法规则,让JavaScript具备我们期望的特性。目前 Angular、React 与 Vue 三大框架都已经集成 TypeScript。如果你想使用这些框架的新特性,那 TypeScript 已经是必学。

黑马程序员官方博客 1730

LoRa学习:LoRa通信调制解调的实现原理与性能

LoRa学习:LoRa调制解调原理与性能 1、LoRa调制解调器原理 LoRa调制解调器采用专利扩频调制和前向纠错技术。与传统的FSK、OOK调制技术相比,LoRa扩大了无线通讯链路的覆盖范围(实现了远距离无线传输),提高了链路的鲁棒性。。 开发人员可调整扩频因子和纠错率这两个参数,从而平衡通讯时的带宽占用、通信速率、空中包的存活时间、以及抗干扰性等。。 LoRa调制解调器...

HowieXue 薛永浩的博客 3万+

尚硅谷TypeScript教程讲义文档分享和学习笔记分享

尚硅谷TypeScript教程讲义文档分享和学习笔记分享

m0_62516225的博客 1529

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

typescript用什么软件写_我是如何从零开始学TypeScript的

本文记录了我这个周末从零开始学习 TypeScript 的经历,包括背景学习途径做笔记的技巧保持专注和确保进度的方法实践过程背景我的Java基础很好 —— 熟悉静态语言类型的常见规范我的JavaScript基础也很好我正计划将 typescript 引进工作项目(以下统一将 typescript 简写成 ts)从官方文档入手虽然之前从未系统学习过 ts, 但在看一些三方库的源码或者示例代码时,多多...

weixin_36146811的博客 162

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

我如何学习Typescript

我开始学习ts的一些心得

549

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

TypeScript中文文档

最近,我找到了一个全面的TypeScript中文学习网站(https://typescript.uihtm.com),该网站包含了TypeScript官方及开源社区编写的编程手册和版本发布说明的中文翻译。这个项目自2015年创建以来,已经维护了近7年,是我参与时间最长的项目。最初,由于TypeScript在国内使用较少,我通过一个国际合作项目开始学习并喜欢上了这门语言。早期TypeScript的文档较少,因此我决定边学边翻译,既为自己也为其他开发者提供学习资源。感谢Microsoft和开源社区的工程师们,T

天天打码-16年老码农 487

TypeScript 中文教程项目文档

``` typescript-book-chinese/ ├── code/ │ ├── docs/ │ ├── images/ │ └── snippets/ ├── gitattributes ├── gitignore ├── CONTRIBUTING.md ├── GLOSSARY.md ├── LICENSE.md ├── README.md ├── SUMMARY.md ├...

gitblog_00766的博客 637

TypeScript学习建议以及超详细学习笔记,免费提供md文档下载

TypeScript学习建议以及超详细学习笔记,免费提供md文档下载

m0_67044645的博客 353

TypeScript 文档化工具: typedoc

http://www.xdnote.com/typedoc/ 由于目前主要前端语言由JavaScript切换到了TypeScript,所以原先用的JSDoc工具也用不了了,虽说JSDoc官方也在积极适配TypeScript,但始终产品不能等工具。何况不是核心的文档功能。 于是上Github上找了一下,很快发现了以下项目: TSDoc typescript-docs ts2jsd...

晴树的专栏 9196

TypeScript中文文档手册

JS中文网 - 前端进阶资源分享,一个帮助开发者成长的社区,你想要的,在这里都能找到,TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript,TypeScript可以在任何浏览器、任何计算机和任何操作系统上运行,并且是开源的

画漫画的程序员∙苏南 1481

typescript学习文档(二)

TypeScript学习笔记,ts基础使用与概念了解

留白声的博客 1163

react学习笔记-使用TypeScript

TypeScript天然支持JSX—只需在项目中添加@types/react(https://www.npmjs.com/package/@types/react)和@types/react-dom(https://www.npmjs.com/package/@types/react-dom)即可获得完整的React Web支持。当你有一个合理的默认值情况下,这种技术是有效的。函数的类型是根据第一个参数中函数的返回值进行判断的,如果希望明确指定,可以为该Hook提供一个类型参数以指定函数类型。

夏晓旭的博客 791

Twoslash社区贡献指南:如何为开源TypeScript文档工具做贡献

Twoslash是一个强大的TypeScript文档工具,它通过特殊的标记语法让TypeScript编译器为你的代码示例提供丰富的类型信息和错误提示。如果你正在寻找如何为这个优秀的开源项目做贡献,这篇完整指南将为你提供从入门到精通的全方位指导。无论你是TypeScript新手还是经验丰富的开发者,都能在这里找到适合自己的贡献方式。 ## 📋 为什么选择Twoslash项目进行贡献? Twos

gitblog_00506的博客 394

TypeScript学习笔记

TypeScript学习笔记 说明 根据B站视频Typescript教程_Typescript视频教程 ts入门实战视频教程-2019年5月更新整理 TS简介 Ts微软开发,包含ES6、包含ES5 编译 tsc xx.ts 每一次都得编译,可以自动编译 开发工具中配置typescirpt自动编译 vscode: 创建tsconfig.json文件 tsc --init 生成配置文件 tsconfig.json配置文件中,修改outDir配置项,取消注释然后修改为.js vscode中,点击上方栏位r

Lenny-zlp的博客 934
上一篇: JS继承实现方式梳理
下一篇: 到底什么是rest风格?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值