详解Vue3.0 前的 TypeScript 最佳入门实践

2020-06-14 06:02:51易采站长站整理
any
可以代替任意类型,所以该方法在传入参数不是数组或者带有
length
属性对象时,会抛出异常。

方法二,定义了参数类型是

Array
的泛型类型,肯定会有
length
属性,所以不会抛出异常。

3. 泛型类型

泛型接口:


interface Generics_interface<T> {
(arg: T): T;
}

function func_demo<T>(arg: T): T {
return arg;
}

let func1: Generics_interface<number> = func_demo;
func1(123); // 正确类型的实际参数
func1('123'); // 错误类型的实际参数

3.3 自定义类型:

Interface
vs
Type alias

Interface
,国内翻译成接口。

Type alias
,类型别名。

以下内容来自:

Typescript 中的 interface 和 type 到底有什么区别

1. 相同点 都可以用来描述一个对象或函数:


interface User {
name: string
age: number
}

type User = {
name: string
age: number
};

interface SetUser {
(name: string, age: number): void;
}
type SetUser = (name: string, age: number): void;

都允许拓展(extends):

interface
type
都可以拓展,并且两者并不是相互独立的,也就是说
interface
可以
extends type
,
type
也可以
extends interface
虽然效果差不多,但是两者语法不同

interface extends interface


interface Name {
name: string;
}
interface User extends Name {
age: number;
}

type extends type


type Name = {
name: string;
}
type User = Name & { age: number };

interface extends type


type Name = {
name: string;
}
interface User extends Name {
age: number;
}

type extends interface


interface Name {
name: string;
}
type User = Name & {
age: number;
}

2. 不同点

type