假设我有一组不同类型的数据:
const input = ["random", 2, {a: "foo", b: "baz"}];
Typescript可以自动推断和提取类型,例如:
type InputTypeArray = typeof input;
这里打字稿知道InputTypeArray是(string | number | {a:string,b:string})[];
让我们调用InputType数组元素的类型,即:
typeof InputType = string | number | {a: string, b: string};
我可以从InputTypeArray派生InputType吗? 换句话说,我如何编写一个函数来接受输入的一个元素作为参数?
const input = ["random", 2, {a: "foo", b: "baz"}];
const myFunction = (element: InputType) => element;
input.map(myFunction);
我如何写" InputType"这里 ?有没有办法从输入中提取它?
我知道我可以通过在map调用中内联myFunction来解决问题,因为typescript将再次推断出函数内部的正确类型。但有没有办法让这种类型变得无可奈何?
答案 0 :(得分:10)
您可以使用此格式获取成员类型:
type InputType = typeof input[number];
您可以在 Steve Holgado 的博客文章中阅读更多相关信息(以及其他一些很酷的提示)here。
答案 1 :(得分:3)
您可以通过指向数组成员来提取它,因此当您使用以下代码获取数组的类型时:
;
您可以使用它来获取单个项目的类型:
val df = spark.read
.option("header", true)
.option("delimiter", ";")
.csv("path to csv file")