基础类型
string, number, boolean, null, undefined
数组类型
Array<T>,T代表数组中的元素类型。
any/unkown/noImplictAny
let obj: any = { x: 0 };
// 后续都不会被检查.
// `any`屏蔽了所有类型检查,相当于你相信你对程序的理解是高于TS的
obj.foo();
obj(); // 运行时会报错
obj.bar = 100;
obj = "hello";
const n: number = obj;
*Implict* : 隐式
*explict* : 显式
配置项:noImplicitAny,当你不为变量声明类型时,如果noImplicitAny=false,那么它是any。如果noImplicitAny=true呢? ——报错
tsconfig.json
{
"compilerOptions": {
"noImplicitAny": true
}
}
unknown
let value: unknown;
value = true; // OK
value = 42; // OK
value = "Hello World"; // OK
let value3: boolean = value; // Error
类型标注
`:` 用于类型标注。
let myName: string = "Alice";
let myName = "Alice" // ts 会 类型推导 myName的类型 为 string
函数
// greet : string -> number (Haskell)
function greet(name: string) : number {
console.log("Hello, " + name.toUpperCase() + "!!");
}
greet(42) // Error
let x : string = greet("omg") // Error
匿名函数的类型
const names = ["Alice", "Bob", "Eve"];
// Array<string>
names.forEach(function (s) {
console.log(s.toUpperCase());
});
names.forEach((s) => {
console.log(s.toUpperCase());
});
知识点:contexture typing(根据上下文猜测匿名函数参数的类型)。
函数可选参数:
function print(arg1 : string, arg2 ? : string) {
console.log(arg1, arg2)
}
print("Hello", "World")
print("Hello")
1