markdown
## 基础操作
### 安装
```text
npm install typescript -g
npm install ts-node -g
```
### 运行
```text
ts-node xxx.ts
```
或者
```text
tsc xxx.ts // 生成xxx.js
node xxx.js
```
## 基础语法
### 数据类型
```text
// null undefined symbol boolean void number string 基础类型
const count: number = 123;
const teacherName: string = 'Dell';
// 对象类型
const teacher: {
name: string,
age: number
} = {
name: 'Dell',
age: 28
}
const numbers: number[] = [1, 2, 3];
const numb: (number | string)[] = [1, '2', 3];
const teacherList: { name: string, age: number }[] = [{
name: 'Tome',
age: 18
}, {
name: 'Dell',
age: 28
}]
```
### 函数
```text
// 函数返回值类型
function getTotal(one: number, two: number): number {
return one + two;
}
// 函数无返回值
function sayHello(): void {
console.log('Hello World');
}
// 函数参数为对象
function add({ one, two }: { one: number, two: number }): number {
return one + two;
}
// 函数参数为数组
function getNumber({ one, two }: number[]): number {
return one + two;
}
// 函数参数为对象,返回值为对象
function getNumber({ one, two }: { one: number, two: number }): { three: number } {
return {
three: one + two
}
}
const func = (str: string) => string = (str) => {
return str;
}
```
### 类型注解
```text
// 类型注解 尽量提前定义类型
let count: number;
count = 123;
// 类型推断
let countInference = 123;
type User = { name: string, age: number }
const teacher: User = {
name: 'Dell',
age: 28
}
```
### 元组 tuple
```text
// 更准确的数组类型定义
const testerInfo: [string ,string,number] = ["harlod","male",18]
```
## interface 接口
```text
interface Person {
readonly id: number; // 只读属性
name: string;
age?: number; // 可选属性
}
const getPersonName = (person: Person): void => {
console.log(person.name);
}
const setPersonName = (person: Person, name: string): void => {
person.name = name;
}
```
## 类 class
```text
class Person {
name = 'dell';
getName() {
return this.name;
}
}
class Teacher extends Person {
getTeacherName() {
return 'Teacher';
}
getName() {
return super.getName() + 'lee';
}
}
```
## 类与接口
```text
interface Person {
name: string;
getName(): string;
}
class Teacher implements Person {
name = 'dell';
getName() {
return this.name;
}
}
```
评论