基础用法
变量命名
// 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的类型必须是一个函数,并且有返回值,需要返回 stringconst Coding: () => string = () => {return 'Coding java'}
类型注解(type annotation)
定义静态类型后,鼠标放在变量上,会有类型提示,这就是类型注解冒号+类型 :type
类型推断(type interface)
ts能推断出来的数据类型,叫类型推断,这样的数据,不用添加类型注解
函数参数注解和返回类型注解
// 1.有返回值,返回值类型定义在参数后function getSum (x: number, y: number): number {return x + y}// 2.无返回值,返回值类型定义为voidfunction sayHello (): void {console.log()}//3.函数代码永远不能执行完,比如 return 语句后有代码, 抛出异常后面有代码, 或者死循环// 此时类型用 neverfunction 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}]
