ts浏览器不能直接识别,我们在写ts代码时  要通过命令行代码转一下

 全局安装ts环境   npm i -g ts-node

 tsc .\hellow.ts   单独将ts转义成js文件

ts-node .\hellow.ts  直接运行ts文件在终端

tsc --watch .\index.ts   监听ts文件变化自动编译成js文件到浏览器端


1.js和ts都是浏览器语言,TS是JS的超集

2.ts在js的基础上新增了几个基础数据类型  

*/

// 元组 Tuple:

// 元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string和number类型的元组。

// 枚举:

// 感觉作用不大

// Any

//  any类型来标记不确定的类型

// Void:

// 表示无返回值的函数 

// Never:

// never类型表示的是那些永不存在的值的类型。 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。

// 类型断言:

// 通过类型断言这种方式可以告诉编译器,“相信我,我知道自己在干什么”。 类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。

// 类型断言有两种形式。 其一是“尖括号”语法:

let someValue1: any = "this is a string";

let strLength2: number = (<string>someValue1).length;

// 另一个为as语法:

let someValue: any = "this is a string";

let strLength: number = (someValue as string).length;

// TS使用函数如果没有返回值,那么定义:void或者省略,如果有返回值,则需要定义返回值类型

// TS定义数组时,要定义数组内元素的数据类型

// TS定义对象时,要先定义对象里面每个元素的类型,再做赋值操作

// let Person {

//     name: string;

//     age: number;

// }

// tom: Person = {

//     name: 'Tom',

//     age: 25

// };

// TS定义对象时,可以使用叫‘接口’的一个方法

interface Person {

    name: string;

    age?: number;   //在这里加?则对象里面可以不定义age这个属性,如果不加,那么对象里面一定时要有age的,否则报错

}

let tom: Person = {

    name: 'Tom',

    age:18

};

let bom: Person = {

    name: 'Tom'

};

/*

定义函数和js差不多,但是没有返回值的要定义 :void

有返回值的要定义返回值的类型,如果ts能够帮助你自动识别类型,那么这一步可以省略

*/

function fn2():void{

    console.log(123);

}

function fn(num1: number, num2: number): number {

    return num1 + num2

}

fn(1, 2)

console.log(fn(1, 2));

//  总结: 最重要的是,只需要记住ts是js 的超集, 很多大型项目使用js也能够实现,但是有种使不上力的感觉,但是ts很好的解决了这一点

// TS定义所有的变量,如果是先定义后赋值,那么一定要定义变量的数据类型,如果是定义的同时赋值了,那么可以省略类型