基础用法
变量命名
// let name: type = ""
let userName: string = 'Cherish'
静态类型
类型一旦定义后就不能够改变
let userName: string = 'Cherish'
// userName 被定义为 string,后续给userName赋值时,只能赋值为 string 类型
- 自定义静态类型
// 定义Coder 静态类型
interface Coder {
name: string,
age: number
}
// 使用Coder 自定义类型
const Cherish: Coder = {
name: 'Cherish',
age: 26
}
基础静态类型
let name:type = xxx
对象静态类型
// 对象字面量形势
const Coder:{
name: string,
age: number
} = {
name: 'Cherish',
age: 26
}
// 数组形式: name: type [] = []
const Coder:string [] = ['Jobs', 'BillGates', 'Cherish']
const CoderAge: number [] = [1, 2, 3]
// 数组中可以包含多种类型时,可以这样写
const Coder: (number|string|Oject) [] = [1, '2', {name: '3'}]
// 类形式
class Person {
}
const Coder:Person = new Person()
// 函数形式
// Coding的类型必须是一个函数,并且有返回值,需要返回 string
const Coding: () => string = () => {
return 'Coding java'
}
类型注解(type annotation)
定义静态类型后,鼠标放在变量上,会有类型提示,这就是类型注解
冒号+类型 :type
类型推断(type interface)
ts能推断出来的数据类型,叫类型推断,这样的数据,不用添加类型注解
函数参数注解和返回类型注解
// 1.有返回值,返回值类型定义在参数后
function getSum (x: number, y: number): number {
return x + y
}
// 2.无返回值,返回值类型定义为void
function sayHello (): void {
console.log()
}
//3.函数代码永远不能执行完,比如 return 语句后有代码, 抛出异常后面有代码, 或者死循环
// 此时类型用 never
function errorFunction (): never {
throw new Error ()
console.log('error!')
}
// 4.参数是一个对象,如何确定参数里的元素的类型
function getSelfIntroduction ({name, age}: {name: string, age: number}): string {
return 'My name is' + name + 'I am' + age + 'years old'
}
const selfIntroduction = getSelfIntroduction({name: 'Cherish', age: 26})
类型别名
// 类型别名
type Coder = { name: string, age: number }
const CoderArray: { name: string, age: number }[] = [{
name: 'Jobs',
age: 26
}, {
name: 'Gates',
age: 28
}]
// 等价于
const CoderArray: Coder[] = [{
name: 'Jobs',
age: 26
}, {
name: 'Gates',
age: 28
}]
// 相当于先定义好对象的类型
// 类型别名的效果和定义类的效果是一致的
class Code = {
name: string,
age: number
}
const CoderArray: Coder[] = [{
name: 'Jobs',
age: 26
}, {
name: 'Gates',
age: 28
}]