ts - ts基础

简介: https://www.tslang.cn/TypeScript是Microsoft公司注册商标。TypeScript具有类型系统,且是JavaScript的超集。 它可以编译成普通的JavaScript代码。 TypeScript支持任意浏览器,任意环境,任意系统并且是开源的。

安装TypeScript

1、在全局环境里安装TS

$ cnpm install -g typescript
$ tsc -v
# Version 5.0.4

2、用 tsc 命令编译 .ts 文件

src/01app.ts 文件:

// 定义了一个 string类型的 变量

在命令行里输入以下命令都可以将.ts文件编译为.js文件:

# 使用tsc指令将src文件夹下的 01app.ts 文件转换输出到 dist目录下的app.js
$ tsc ./src/01app.ts --outFile ./dist/01app.js
$ tsc ./src/01app.ts --outDir ./dist

5分钟了解TypeScript

构建第一个TypeScript文件

在编辑器,将下面的代码输入到 src/02greeter.ts 文件里。我们注意到 person: string,表示 string 是 person 函数的参数类型注解:

// function greeter (a, b, c) {}
// function greeter (a: string, b: number, c: boolean) {}
// function greeter (a: string, b: number, c: boolean): string {} 函数的返回值为string类型
// function test (): void {} void 代表该函数没有返回值
function greeter (person: string): string {
   
  return 'hello' + person
}

console.log(greeter('成三岁'))

类型注解

TypeScript里的类型注解是一种轻量级的为函数或变量添加约束的方式。 在这个例子里,我们希望 greeter函数接收一个字符串参数。 然后尝试把 greeter的调用改成传入一个数组:

// function greeter (a, b, c) {}
// function greeter (a: string, b: number, c: boolean) {}
// function greeter (a: string, b: number, c: boolean): string {} 函数的返回值为string类型
// function test (): void {} void 代表该函数没有返回值
function greeter (person: string): string {
   
  return 'hello' + person
}

console.log(greeter('成三岁'))
// Argument of type 'number' is not assignable to parameter of type 'string'.
// 类型“number”的参数不能赋给类型“string”的参数
// console.log(greeter(100))

重新编译,你会看到产生了一个错误:

Argument of type 'number' is not assignable to parameter of type 'string'.
// function greeter (a, b, c) {}
// function greeter (a: string, b: number, c: boolean) {}
// function greeter (a: string, b: number, c: boolean): string {} 函数的返回值为string类型
// function test (): void {} void 代表该函数没有返回值

// 声明式函数 
// function greeter (person: string): string {
   
//   return 'hello' + person
// }

// 定义了变量 该变量是一个函数
// const greeter: (person: string) => string 定义了一个函数,且该函数有string类型的参数,并且函数的返回值为 string
// 此处的 =>  不是箭头函数 表示ts的函数的返回值类型
// const greeter: (person: string) => string = function (person: string): string {
   
//   return 'hello' + person
// }

// const greeter =  (person) => {
   
//   return 'hello' + person
// }

// 第一个 => 表示函数的返回值为 string
// 第二个 => 表示此处是一个函数
const greeter: (person: string) => string  =  (person: string):string => {
   
  return 'hello' + person
}

console.log(greeter('成三岁'))
// Argument of type 'number' is not assignable to parameter of type 'string'.
// 类型“number”的参数不能赋给类型“string”的参数
// console.log(greeter(100))

类似地,尝试删除greeter调用的所有参数。 TypeScript会告诉你使用了非期望个数的参数调用了这个函数。 在这两种情况中,TypeScript提供了静态的代码分析,它可以分析代码结构和提供的类型注解。

要注意的是尽管有错误,greeter.js文件还是被创建了。 就算你的代码里有错误,你仍然可以使用TypeScript。但在这种情况下,TypeScript会警告你代码可能不会按预期执行。

接口

让我们开发这个示例应用。这里我们使用接口来描述一个拥有firstName和lastName字段的对象。 在TypeScript里,只在两个类型内部的结构兼容,那么这两个类型就是兼容的。 这就允许我们在实现接口时候只要保证包含了接口要求的结构就可以,而不必明确地使用 implements语句。

// 如果要给某一个位置添加 对象的类型, 使用接口去解决文通
interface IUser {
    // 实际上就相当于你自己定义了一个数据类型
  firstName: string; // 结尾 可以 什么也不写,也可以写为 , 还可以写为;
  lastName: string;
}

// // user 是一个对象 需要通过 接口 来定义对象的数据类型
// function greeter1 (user: IUser): string {
   
//   return 'hello' + user.firstName + ' ' + user.lastName
// }


// function greeter1 (user: { firstName: string, lastName: string }): string {
   
//   return 'hello' + user.firstName + ' ' + user.lastName
// }


const greeter1: (user: IUser) => string  = (user: IUser): string => {
   
  return 'hello' + user.firstName + ' ' + user.lastName
}
console.log(greeter1({
    firstName: 'mou', lastName: 'link'}))
相关文章
|
3月前
|
JavaScript 前端开发 API
第9期 一文读懂TS的(.d.ts)文件
第9期 一文读懂TS的(.d.ts)文件
99 0
|
JavaScript 前端开发 API
一文读懂TS的(.d.ts)文件
一文读懂TS的(.d.ts)文件
3936 0
|
3月前
|
资源调度 JavaScript 前端开发
介绍一下ts
介绍一下ts
54 1
|
12月前
ts的内置工具
ts的内置工具
68 0
|
3月前
ts文件解密
ts文件解密
163 0
|
9月前
|
JavaScript 前端开发 开发者
ts详解以及相关例子(一篇带你详细了解ts)
ts详解以及相关例子(一篇带你详细了解ts)
80 1
|
10月前
|
JavaScript 前端开发 安全
|
JavaScript 开发者
什么是TS?
什么是TS?
123 0