Typescript类型any [],但只有一种类型

时间:2019-05-09 07:53:05

标签: typescript

是否可以使用类型def dicts_to_csv(source, output_file): def build_row(dict_obj, keys): return [dict_obj.get(k, "") for k in keys] keys = sorted(set(chain.from_iterable([o.keys() for o in source]))) rows = [build_row(d, keys) for d in source] cw = csv.writer(output_file) cw.writerow(keys) if PY2: for row in rows: cw.writerow([c.encode('utf-8') if isinstance(c, str) or isinstance(c, unicode) else c for c in row]) else: for row in rows: cw.writerow([c for c in row]) def write_csv(headers, rows, file): cw = csv.writer(file) cw.writerow(headers) if PY2: for row in rows: cw.writerow([c.encode('utf-8') if isinstance(c, str) or isinstance(c, unicode) else c for c in row]) else: for row in rows: cw.writerow([c for c in row]) ,但所有类型都相同?即

any[]

1 个答案:

答案 0 :(得分:0)

我认为对any类型有误解。

首先让我们定义什么是any类型。从文档中:

  

我们可能需要描述在编写应用程序时不知道的变量类型。这些值可能来自动态内容,例如来自用户或第三方库。在这种情况下,我们要选择退出类型检查,并让值通过编译时检查。

因此,使用any类型,我们告诉编译器不要检查类型,而只是通过它们。

如果要在编译时进行类型检查,则应指定所需的类型。在您的示例中,f1f2的类型在编译时是已知的。

var f1 = new Array<string>(0);
f1 = ['a', 'b', 'c'];  // OK
f1 = [1, 2, 'a'];  // Type error

var f2 = new Array<number>(0);
f2 = [1, 2, 3];  // OK
f2 = [1, 2, 'a'];  // Type error

或者做得更简单

var f3 = [1, 2, 3]; // Now f3 is of type number[]
f3 = [1, 2, 'a'];  // Type error

结果:从代码中删除any[],您将得到所需的内容。