泛型T和Any这样用

426 阅读2分钟

<T>any 都可以用来表示类型的不确定性,但是它们的使用场景和含义是不同的。

any 表示任何类型都可以被接受,它是一种弱类型的写法。在使用 any 类型时,我们可以对它进行任何操作,而不会受到类型检查的限制。例如:


let x: any = 123;

x = 'hello';

x = true;

x = { name: 'Alice', age: 18 };

在上面的代码中,变量 x 的类型是 any,我们可以将它赋值为任何类型的值。

<T> 是一种泛型类型参数,它用于表示一种通用的类型。在使用 <T> 时,我们需要在定义时指定类型参数 T 的类型,这样在使用时才能进行类型检查和类型推断。例如:


function identity<T>(arg: T): T {

  return arg;

}

  


let x = identity<string>('hello'); // x 的类型为 string

let y = identity<number>(123); // y 的类型为 number

在上面的代码中,函数 identity 接受一个参数 arg,并且返回和参数类型相同的值。在定义函数时,我们使用 <T> 来表示泛型类型参数,它可以代表任何类型。在使用函数时,我们需要在尖括号中传入类型参数,以指定函数返回值的类型。

泛型是指在定义函数、接口或类的时候,不预先指定具体类型,而是在使用的时候再指定类型。

泛型中的 T 就像一个占位符、或者说一个变量,在使用的时候可以把定义的类型像参数一样传入,它可以原封不动地输出。

any 是一种弱类型的写法,它可以接受任何类型的值,而 <T> 是一种泛型类型参数,它用于定义通用的函数或类,可以在使用时指定具体的类型。