是js的超集,TypeScript 通过类型注解提供编译时的静态类型检查。
1.npm install typescript -g
2. 编译为tsc **.ts
3.ts初始化tsc --init 可以在outdir和rootdir中设置输出目录和源文件存放位置,strict:true开启严格模式,使用tsc -p tsconfig.json进行编译
let num: number = 100
num = parseInt('1000')
var names = 'abc'
names = 'cba'
let undate: undefined = undefined
let nulldata: null = null
let arr: [number, string] = [1, 'a']
let arr2: Array<number> = [1, 1, 1]
let arr3: string[] = ['a', 'b']
let bl: boolean = false
let anydate: any = 1
anydate = 'a'
function neverfun(): never {
throw new Error()
}
function main(): void {
neverfun()
}
let obj: object = []
let obj2: { name: string, age: number } = {
name: 'zs',
age: 12,
}
enum enum1 {
male = 1,
female = -1,
unknow = 0
}
let sex: enum1 = enum1.male
class person {
username = 'zs'
age = 12
constructor(username: string, age: number) {
this.username = username
this.age = age
}
say(): number {
console.log('hello world');
return 1
}
}
class Xiong extends person {
profession: string
readonly maritalStatus = "保密"
constructor(username: string, age: number, professon: string, public gender: string) {
super(username, age)
this.profession = professon
}
say() {
console.log(`我是${this.profession}`);
return 1
}
private sing() {
console.log('lalalala~')
}
protected rap() {
console.log('jojojojojo~');
}
dance() {
console.log('我跳了一支舞');
}
}
let xiong = new Xiong('xys', 18, 'itboy', '男')
xiong.say()
xiong.dance()
console.log(xiong.gender);
xiong.gender = '女'
console.log(xiong.gender);
console.log(xiong.maritalStatus);
class Car {
private _name = '共享单车'
get name() {
return this._name
}
set name(val) {
if (val.length < 2 || val.length > 5) {
throw new Error('名字不合法!')
}
this._name = val
}
}
let bus = new Car()
console.log(bus.name);
bus.name = 'bus'
console.log(bus.name);
interface Point {
readonly x: number,
readonly y: number,
z?: number
[propName: string]: any
}
interface Point2 {
x: number
y: number
log(): string
}
let poi: Point = {
x: 10,
y: 10,
z: 20
}
let poi2: Point = {
x: 10,
y: 10,
}
let poi5: Point = {
x: 10,
y: 10,
dads: 'dasdas'
}
class Poi3 implements Point2 {
x = 10
y = 10
log() {
console.log(`x:${this.x} y:${this.y}`);
return `x:${this.x} y:${this.y}`
}
}
console.log('```````````````');
let poi3 = new Poi3()
poi3.log()
interface add { (a: number, b: number): number }
let numberAdd: add = function (a: number, b: number) {
return a + b
}