1. // 直接使用字面量进行类型声明
    2. let s: 10 //比较少使用
    3. let m: 'male' | 'female'
    4. // 联合类型
    5. let c: boolean | string
    6. let d: any //相当于关闭类型检测,表示的是任意类型,在开发时不建议使用,跟js没区别
    7. // 声明变量如果不指定类型,则TS解析器会自动判断变量的类型为any(隐式的any)
    8. /* 如果不用any的话,还有一个选择,设置其为unknown类型 */
    9. let u: unknown
    10. // any类型可以赋值给任意变量,但是unkonwn类型不会发生这种情况
    11. /* 可以加上判断,这样就不会报错,避免产生其他问题,或者使用断言c = u as string,可以用来告诉解析器变量的实际类型 */
    12. // if (typeof u === 'string') {
    13. // c = u
    14. // }
    15. /* 断言有两种用法:
    16. 第一种用法:c = u as string
    17. 第二种用法:c = <string>u */
    18. // c = <string>u
    19. // c = u as string
    20. /* void用来表示空,以函数为例,就表示没有返回值的函数 */
    21. const i = (): void => {
    22. }
    23. /* never:表示永远不会返回结果 */
    24. const err = (): never => {
    25. throw new Error('出错了!')
    26. }
    27. /* object:表示对象,一般开发中不使用
    28. {}用来指定对象中可以包含哪些属性
    29. 语法:{属性名:属性值,属性名:属性值}
    30. 要求结构必须一摸一样,必须对照,
    31. 可以在属性名后面加上问号表示属性名是可选的 */
    32. let e: object
    33. e = { a: 1, b: 2 }
    34. let f: { c: number, d?: string } //其中?表示该属性名是可选的
    35. f = { c: 2 }
    36. /* 如果有需求要表示任意类型的属性名就需要写[propName:string]:any */
    37. let g: { name: string, [propName: string]: any }
    38. g = { name: '穆欣月', age: 88, gender: '未知' }
    39. //表示任意类型的属性,后面name属性后可以添加多个声明时未指定的属性
    40. let h: (a: number, b: number) => number // 希望h是一个函数,并指定参数和返回值的类型
    41. h = (w, i): number => {
    42. return w + i
    43. }// 设置函数结构的类型声明 语法:(形参:类型,形参:类型。。。)=> 返回值
    44. /* 数组类型的声明:两种写法:1.类型[] 2.Array<类型>
    45. string[]表示字符串数组
    46. number[]表示数字数组
    47. */
    48. let arr: string[]
    49. arr = ['1', '2', '3']
    50. /* tuple(元组)类型就是固定长度的数组:语法:[类型,类型] */
    51. let k: [string, string] // let k: [string, string]
    52. k = ['1', '2']
    53. /* enum枚举: */
    54. enum Gender {
    55. male = 0,
    56. female = 1
    57. }
    58. let o: { name: string, gender: Gender }
    59. o = {
    60. name: '穆欣月',
    61. gender: Gender.female
    62. }
    63. let j: string & number
    64. let jj: { name: string } & { age: number }
    65. jj = {
    66. name: 'zhang',
    67. age: 12
    68. }
    69. /* 类型的别名:可以简化类型的使用 */
    70. type myType = 1 | 2 | 3 | 4 | 5
    71. let p: myType
    72. p = 5