keyof Map<any, any>返回的什么类型啊?
在vue3的源码里有这么一个类型
type UnwrapRefSimple<T> = T extends Function | BaseTypes | Ref | RefUnwrapBailTypes[keyof RefUnwrapBailTypes] | { [RawSymbol]?: true;} ? T : T extends Map<infer K, infer V> ? Map<K, UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof Map<any, any>>> : T extends WeakMap<infer K, infer V> ? WeakMap<K, UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof WeakMap<any, any>>> : T extends Set<infer V> ? Set<UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof Set<any>>> : T extends WeakSet<infer V> ? WeakSet<UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof WeakSet<any>>> : T extends ReadonlyArray<any> ? { [K in keyof T]: UnwrapRefSimple<T[K]>;} : T extends object & { [ShallowReactiveMarker]?: never;} ? { [P in keyof T]: P extends symbol ? T[P] : UnwrapRef<T[P]>;} : T;
这里的Omit<T, keyof Map<any, any>>里的keyof Map<any, any>返回的什么类型啊? never吗?
我单独给一个变量赋值为这个类型,发现不管是什么值都不符合let test: keyof Map<any, any>
keyof Map<any, any>
返回的类型是 string | number
。
在 TypeScript 中,Map
类型是一个关联数组,它存储的键可以是字符串或数字。因此,keyof Map<any, any>
的结果就是 string | number
。
如果你给一个变量赋值为这个类型,你会发现它可以是任何字符串或数字。例如:
let test: keyof Map<any, any>;test = "hello"; // 正确test = 123; // 正确test = true; // 错误,因为 true 不是 string 或 number
在上面的代码中,变量 test
可以被赋值为字符串或数字,但是不能被赋值为其他类型(比如布尔值)。
头文件: "boost/any.hpp" 类 any 允许对任意类型进行类型安全的存储和取回。不象无类类型,any 保存了类型信息,并且不会让你在不知道正确类型的情况下获得存入的值。当然,有办法可以让你询问关于类型的信息,也有测试保存的值的方法,但最终,调用者必须知道在 any 对象中的值的真实类型,否则不能访问any。可以把 any 看作为上锁的安全性。没有正确的钥匙,你不能进入其中。any 对
如果Pred(Elem)为List中的至少一个元素Elem返回true,则返回true。 语法 (Syntax) any(Pred,lst) 参数 (Parameters) Pred - 将应用于字符串的谓词函数 Lst - 值列表 返回值 (Return Value) 如果Pred(Elem)为List中的至少一个元素Elem返回true,则返回true。 例如 (For example) -
注:内容翻译自官网参考文档中 Java Generated Code 的 Any 一节。 假设有一个类似这样的Any字段: import "google/protobuf/any.proto"; message ErrorStatus { string message = 1; google.protobuf.Any details = 2; } 在我们生成的代码中,details字段
注:内容翻译自官网文档 Language Guide (proto3) 中的 Any 一节 Any 消息类型可以让你使用消息作为嵌入类型而不必持有他们的.proto定义. Any把任意序列化后的消息作为bytes包含, 带有一个URL, 工作起来类似一个全局唯一的标识符. 为了使用Any类型, 需要导入google/protobuf/any.proto. import "google/protob
如果集合中值的任何谓词在逻辑上为真,则返回false,否则返回true。 语法 (Syntax) 以下是语法。 (not-any? p1 col) Parameters - 'p1'是需要测试的谓词。 'col'是需要测试的值集合。 Return Value - 如果集合中值的任何谓词在逻辑上为真,则返回false,否则返回true。 例子 (Example) 以下是不是任何一个例子? 在Clo
方法any遍历集合的每个元素,检查布尔谓词是否对至少一个元素有效。 语法 (Syntax) boolean any(Closure closure) boolean every(Closure closure) 参数 (Parameters) collection元素要满足的条件在闭包中指定,该闭包必须是一些布尔表达式。 返回值 (Return Value) find方法返回一个布尔值。 例子