typeScript入门基础介绍

 更新时间:2022年02月17日 17:28:21   作者:前端人  
这篇文章主要介绍了 typeScript入门基础,TypeScript 是由微软开发的开源、跨平台的编程语言,是 javaScript 的超集,最终被编译为 javaScript代码。常常被简称为TS支持JS、ES语法,下文将继续其他基础介绍,需要的朋友可以参考一下

TS 的特点:

  • 始于 javaScript 归于 javaScript 。
  • 强大的类型系统。
  • 先进的 javaScript 。
  • 适合开发大型项目,编译成纯 js 代码,js 可以运行在任何浏览器上。

typeScript 是区分大小写的一门语言,本篇文章主要带你了解 ts 的安装,环境配置,以及简单的入门。

一、安装 TS

使用之前需要安装:

npm install -g typescript

安装完成之后,使用 tsc -v 检查安装之后的版本。

第一个 ts 文件:01.ts,代码如下:

(()=>{
 function show(msg){
  return "字符串:"+msg
 }
 let str = "前端"
 console.log(show(str))
})()

通过 script 引入 html 文件

<script  src="./01.ts"></script>

页面正常运行,因为 ts 能够支持 js 语法,所以文件内直接引入使用是没问题的,除此之外,还可以使用 node 命令运行该文件,也是可以正常执行的。

如果此时,在 ts 文件内加入 ts 语法:

// 添加类型支持
(()=>{
 function show(msg:string){
  //添加 string 的意义在于传入的 msg值只能是字符串,不可以是其他类型
  return "字符串:"+msg
 }
 let str = "前端"
 console.log(show(str))
})()

此时浏览器运行时,会报错,无法继续执行。

此时就需要将 ts 文件编译为 js 文件,打开命令行工具,运行:

tsc 01.ts

运行后会自动生成一个 01.js 文件,查看js代码内容如下:

function show(msg) {
 return "字符串:" + msg;
}
(function () {
 var str = "前端";
 console.log(show(str));
})();

总结:

  • ts 文件内直接输入 js 文件,在 html 文件引入 ts 文件,在浏览器内是可以直接运行的。
  • ts 文件内如果有 ts 语法代码,若在 html 文件内引入 ts 文件,直接在浏览器运行会报错,此时需要先编译为 js 文件。
  • 在 ts 文件函数中的形参,如果使用了某个类型进行修饰,那么在最终编译的 js 文件中是没有该类型的。
  • ts 内地 let 修饰符,编译后的 js 文件内变成了 var 。

二、Vscode 自动编译 ts

新建一个项目目录,当前目录下打开命令行工具,执行

tsc --init

自动生成 tsconfig.json 文件,代码如下:

{
 "compilerOptions": {
  "target": "es2016",                                
  "module": "commonjs",                               
  "outDir": "./js",                                  
  "esModuleInterop": true,                             
  "forceConsistentCasingInFileNames": true,      
  "strict": true,                                                  
  "skipLibCheck": true                               
 }
}

注:

outDir 表示的是 ts 文件编译之后生成 js 文件的存放目录。如果属性值之后的文件夹不存在时,就会自动创建。

strict 表示是严格模式。

新建 index.ts 文件,代码如下:

(() => {
 function showStr(str:string) {
  return str 
 }
 let a: string = "前端人"
 // 调用函数
 console.log("a",showStr(a));
})()

类型注解:函数地形参后加修饰符,用来限制传入参数的类型,string 表示只能为字符串类型。

在命令行运行

tsc -w 
//或
tsc -watch

自动生成 js 文件夹,包括 index.js 文件。运行该命令后,只要 ts 文件发生改变,就会自动编译。

一切运行正常,没有任何错误。

如果调用函数的参数传为数值时:

console.log(showStr(123));

此时编辑器内报错:类型“number”的参数不能赋给类型“string”的参数。

ts 能够智能提示问题,是因为 ts 提供了静态代码分析,可以分析代码结构和提供的类型注解。

但是 tsc 编译的时候,虽然会提示错误,但它依旧会编译为 js 文件,js 在执行的时候不会报错,因为 js 是弱类型语言。

三、入门 TS

基础数据类型

  • 为布尔值类型。如:let isDone: boolean = false;
  • number 为数值类型,ts 能够支持二、八、十、十六进制数据。如:let decLiteral: number = 6;
  • string 为字符串类型。如:let name: string = "bob";
  • 表示数组类型。数组名后加元素类型[] 加 数组值。如:let list: number[] = [1, 2, 3];
  • 元组类型。如:let arr:[string,number,boolean] = ['str',1,true]
  • 枚举,为一组数值赋予友好名字。如:enum Color { red, green, blue }
  • 任意类型,有时不确定传入的值是什么类型,就可以使用 any 类型。如:let notSure:any = 1
  • 空值,与 any 正好相反,表示没有任何类型。 如:function show():void { }
  • null undefined
  • never 类型,表示永不存在的值。function error(message: string): never { throw new Error(message); }

接口

接口简单点讲就是一种约束。在 ts 里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。

TypeScript 中的接口是一个非常灵活的概念,除了可用于对类的一部分行为进行抽象以外,也常用于对「对象的形状(Shape)」进行描述。

使用形式:

(() => {
 //定义一个接口
 interface Person{
  firstName:string,//添加类型限定
  lastName:string
 }
 function showFullName(person:Person) {
  // 添加类型限定之后,内部会自动提示接口内的字段
  return person.firstName + '_' + person.lastName
 }
 const p = {
  firstName: "Hello",
  lastName: "World"
 }
 console.log("姓名",showFullName(p));
})()

如果把 p 中的 firstName 注释掉,就会报错,提示:

在本实例中,接口的意义就是限定传入 showFullName 函数内的数据属性的限制。

接口优点:自动检测传入的数据是否符合接口规范,如果不符合则会报错。

Typescript类介绍

传统的 JavaScript 的程序使用函数和基于原型的继承来创建可重用的组件,但对于熟悉使用面向对象方式的程序员来讲就有些棘手,因为他们用的是基于类的继承并且对象是由类构建出来从 ECMAScript 2015,也就是 ECMAScript 6 开始,JavaScript 程序员将能够使用基于类的面向对象的方式。使用 TypeScript,我们允许开发者现在就使用这些特性,并且编译后的 JavaScript 可以在所有主流浏览器和平台上运行,而不需要等到下个JavaScript的版本。

ts 的类只是一个语法糖,本质还是 js 函数实现的。

使用示例:

(() => {
  //定义一个接口
  interface Person{
    firstName: string,
    lastName:string
  }
  //定义一个类
  class Personal {
    //定义公共的字段属性
    firstName: string
    lastName: string
    fullName: string
    // 构造函数
    constructor(firstName: string,lastName:string) {
      //更新属性数据
      this.firstName = firstName
      this.lastName = lastName
      this.fullName = this.firstName + this.lastName
    }
  }
  
  const p = new Personal('你','好')
  
  function showFullName(person: Person) {
    return person.firstName + person.lastName
  }
  console.log("p",showFullName(p));
})()

到此这篇关于 typeScript入门基础介绍的文章就介绍到这了,更多相关 typeScript内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js点击任意区域弹出层消失实现代码

    js点击任意区域弹出层消失实现代码

    这篇文章主要为大家详细介绍了js点击任意区域弹出层消失实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • js+css实现有立体感的按钮式文字竖排菜单效果

    js+css实现有立体感的按钮式文字竖排菜单效果

    这篇文章主要介绍了js+css实现有立体感的按钮式文字竖排菜单效果,通过javascript动态调用页面元素样式实现竖排菜单的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • Angular 服务器端渲染缓存功能问题

    Angular 服务器端渲染缓存功能问题

    这篇文章主要介绍了Angular服务器端渲染缓存功能问题,内存缓存可用于应用程序本身的渲染页面和API请求。 两种使用场合都通过开发包@ngx-ssr或cache提供
    2022-06-06
  • javascript中if和switch,==和===详解

    javascript中if和switch,==和===详解

    这篇文章主要给大家详细介绍了javascript中if和switch,==和===的区别和联系,十分的细致实用,有需要的小伙伴可以参考下。
    2015-07-07
  • 浅谈javascript对象模型和function对象

    浅谈javascript对象模型和function对象

    这篇文章主要简单介绍了javascript对象模型和function对象,以及相关的示例代码,非常实用,需要的小伙伴参考下
    2014-12-12
  • 侧栏跟随滚动的简单实现代码

    侧栏跟随滚动的简单实现代码

    侧栏里的有些内容滚动到页面顶端以后就固定在那个位置,不再跟随滚动条而滚动,想必很多站长朋友都想实现这个效果吧,接下来为大家详细介绍下,感兴趣的你可不要错过了哈
    2013-03-03
  • JavaScript之class继承_动力节点Java学院整理

    JavaScript之class继承_动力节点Java学院整理

    这篇文章主要介绍了JavaScript之class继承,新的关键字class从ES6开始正式被引入到JavaScript中。class的目的就是让定义类更简单,有兴趣的可以了解一下
    2017-07-07
  • jQuery实现动态文字搜索功能

    jQuery实现动态文字搜索功能

    本文主要介绍了jQuery实现动态文字搜索功能的分析过程,文章底部提供了完整的代码。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • JS实现新浪微博效果带遮罩层的弹出框代码

    JS实现新浪微博效果带遮罩层的弹出框代码

    这篇文章主要介绍了JS实现新浪微博效果带遮罩层的弹出框代码,涉及JavaScript响应鼠标事件动态操作页面元素的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • 原生Javascript和jQuery做轮播图简单例子

    原生Javascript和jQuery做轮播图简单例子

    这篇文章主要为大家详细介绍了原生Javascript和jQuery做轮播图简单例子,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10

最新评论