// 基本类型
var b:number = 456
var c:String = ‘456’
let bool:boolean = false
let n:null = null
let unF:undefined = undefined
let obj:Object = new String(‘hello world!’)
let sys:symbol = Symbol(‘test1’)
let obj ={
[sys]:‘my 666’
}
console.log(obj)
const sym = Symbol();
let obj = {
[sym]: “semlinker”,
};
console.log(obj[sym]); // semlinker
// array
let list:number[] = [1,2,3]
let list2:Array<number|string> = [123,‘456’] // Array泛型语法
console.log(list , list2)
// Enum类型
enum Direcion {
North,
South
}
let dir :Direcion = Direcion.North
let dir2 :Direcion = Direcion.South
console.log(dir , dir2)
//字符串枚举
enum Direcion2 {
NORTH = “NORTH”,
SOUTH = “SOUTH”,
EAST = “EAST”,
WEST = “WEST”,
}
//Any类型
let notSure:any = 666
notSure=‘fdsherh’
notSure = false
//unknown
let value : unknown
value = true; // OK
value = 42; // OK
value = “Hello World”; // OK
value = []; // OK
value = {}; // OK
value = Math.random; // OK
value = null; // OK
value = undefined; // OK
value = new TypeError(); // OK
value = Symbol(“type”); // OK
//试将类型为 unknown 的值赋值给其他类型的变量时会发生什么?
let value: unknown;
let value1: unknown = value; // OK
let value2: any = value; // OK
let value3: boolean = value; // Error
let value4: number = value; // Error
let value5: string = value; // Error
let value6: object = value; // Error
let value7: any[] = value; // Error
let value8: Function = value; // Error
// Tuple类型
// 数组中多个不同的值 , 可以使用元组
let arr1 : [string , boolean ]
arr1 = [‘sock’ , true]
//void类型 表示没有任何类型 .
// 当一个函数没有返回值时,通常见到其返回值类型时void
var obj = {
name:‘my name’
}
function green(name:Object):void{
console.log(name)
}
green(obj)
// 需要注意的是,声明一个 void 类型的变量没有什么作用,
// 因为在严格模式下,它的值只能为 undefined:
// let unusable:void = undefined
//object , Object {}
interface ObjectConstructor {
create(o:object | null):any
}
const proto = {}
Object.create(proto)
Object.create(null)
Object.create(undefined); // Error
Object.create(1337); // Error
Object.create(true); // Error
Object.create(“oops”); // Error
// Object 类型:它是所有 Object 类的实例的类型
// Object接口定义了Object.prototype原先对象上的属性
const obj = {
prop:‘sdfdf’
}
obj.prop = ‘smile’
// never类型 表示时那些永远不存在的值得类型
// never 类型是那些总是会抛出异常或根本就不会有
// 返回值的函数表达式或箭头函数表达式的返回值类型。
// TS断言
//类型断言
//你会比ts更了解某个值的详细信息 ,
//通常这会发生在你清楚的指定一个具体有比他现有类型更确切的类型
let someValue:any = ‘this is a string’
let strLength:number = (someValue).length
let someValue: any = “this is a string”;
let strLength: number = (someValue as string).length;
//非空断言 x! 将从 x 值域中排除 null 和 undefined
//忽略undefined 和null类型
function myFun(maybeString:string|undefined|null){
// const onlyString: string = maybeString //err
const ignoreUnderfinedNull:string = maybeString! //ok
}
//调用函数时忽略undefined 类型
type NumGenerator = ()=> number;
function myFun(numGenerator:NumGenerator | undefined){
// const num1 = numGenerator()
const num2 = numGenerator!()
console.log( 123132132 , numGenerator)
}
myFun(()=> 124555)