共计 1921 个字符,预计需要花费 5 分钟才能阅读完成。
tsc
$ tsc –outDir dirName
$ tsc –outDir dirName compileName # 指定输出输入位置
$ tsc –init # tsconfig.json
$ tsc -w # 动态监视
$ ts-node file # 直接运行 ts 文件
$ npm bin -g # 查看 - g 命令目录
$ tsc file -d # 生成.d.ts 文件
type
变量使用前要定义
// let/var 变量名: 变量类型 = 默认值
变量类型
number: 数值类型
string: 字符串类型
boolean: 布尔类型
symbol: 符号类型,标识唯一对象
any: 任意类型
object: 对象类型 (数组,元祖,类,接口,函数等)
var,let 区别
限定变量的作用范围
防止变量的重复定义
常量
用处:
系统配置文件路径
数据库连接串
公司名称,电话,邮件地址
画面表示信息(登录失败,系统出错)
const name:type = initial_value
const DATA:number[] = [10, 20, 30]
数组
let name:type[] = initial_value
let name:type[][] = [
[], [], []
]
枚举
枚举类型,可以增加代码的可读性。ls
enum name {name1, name2, name3}
enum Sex {
MALE,
FEMALE,
UNKNOWN
}
联合类型
let a: number | null | undefined
function
function run(a: string): string {
return ”
}
let s = function (a: number): string {}
let t1 = (x, y) => x + y
let t2 = (x, y) => {return x + y}
let t3:(a: number, b: string) => void = function (a: number, b: string): void {}
interface P {
(a: number, b: string): void
}
let add: P = function (a: number, b: string): void {}
函数重载
通过为同一个函数(同名函数)提供多个函数类型定义来实现多种功能的目的。
class
静态属性,静态方法
class Person {
public name: string
static age: number
constructor (name: string) {
this.name = name
}
public run () {
console.log(‘run’)
}
static work () { // 静态方法里没方法调用成员方法
console.log(‘work’)
}
}
let p = new Person(‘s’)
抽象类,多态
多态:父类定义一个方法不去实现,让继承的子类去实现,每一个子类有不同的表现。
class Animal {
protected name: string
constructor (name: string) {
this.name = name
}
public eat () {
console.log(this.name + ‘ eat’)
}
}
class Dog extends Animal {
constructor (name: string) {
super(name)
}
public eat () {
console.log(this.name + ‘ eat’)
}
}
class Pig extends Animal {
constructor (name: string) {
super(name)
}
public eat () {
console.log(this.name + ‘ eat’)
}
public hoho () {
console.log(‘hoho’)
}
}
let d = new Dog(‘dog’)
d.eat()
let p = new Pig(‘pig’)
p.hoho()
// 抽象类:定义一种标准
abstract class Animal {
abstract eat (): void
abstract name: string
}
class Dog extends Animal {
public name = ‘dog’
constructor () {
super()
}
public eat () {}
}
interface
类型注解:
class Person {}
type {}
interface {}
接口是规范的定义。
// 属性类型接口
interface Color {
firstName: string
name: string
}
let a: Color = {// 对象约束
name: ‘tan’,
firstName: ‘pink’
}
// 函数类型接口
interface encrypt {
(key: string, val: string): string
}
let md5: encrypt = (key, val): string => {}
// 可索引的接口:数据,对象的约束