以下代码
x = [45, -1, 0, 54, 101, 2, 7,11]
x = sortList(x)
print(x)
print(median(x))
我想遍历type Value<T> = {|
name: string,
value: T,
|}
const myNumber: Value<number> = { name: 'number', value: 1 };
const myString: Value<string> = { name: 'string', value: 'foo' };
const arr: Array<Value> = [myNumber, myString];
对象的数组并获取我所有对象的Value
值,但是我遇到了这个错误:
name
有什么想法可以在不使用9: const arr: Array<Value> = [myNumber, myString];
^ Cannot use `Value` [1] without 1 type argument.
References:
1: type Value<T> = {|
^ [1]
的情况下解决此问题?我正在使用Value<any>
流程游乐场link
答案 0 :(得分:2)
您需要为数组项类型指定type参数
type Value<T> = {|
name: string,
value: T,
|}
const myNumber: Value<number> = { name: 'number', value: 1 };
const myString: Value<string> = { name: 'string', value: 'foo' };
const arr: Array<Value<any>> = [myNumber, myString];
根据您要严格的程度,您还可以使用具有联合类型的数组作为项
const arr: Array<Value<number>|Value<string>> = [myNumber, myString];
或元组类型:
const arr: [Value<number>,Value<string>] = [myNumber, myString];
您还可以跳过注释,让编译器推断类型。
答案 1 :(得分:2)
更新 在最新版本(经过0.98.0测试)中,流程能够正确推断类型,因此不再需要显式注释。随便去吧
const arr = [myNumber, myString];
旧版本:
在流程中,您可以使用Existential Type (*)
存在类型用作占位符以告诉Flow推断类型
const arr: Array<*> = [myNumber, myString];
答案 2 :(得分:0)
我最终使用了它,因为我真的不需要知道value
的类型。
type Value<T> = {|
name: string,
value: T,
|}
const myNumber: Value<number> = { name: 'number', value: 1 };
const myString: Value<string> = { name: 'string', value: 'foo' };
const arr: Array<{name: string}> = [myNumber, myString];