-
datepart函数的返回值类型_Typescript之获取函数返回值类型
2021-01-15 07:37:42前言目前TS官方API还不支持获取函数返回值类型,但是对于函数式编程流行的当今,这个功能非常的重要,比如我们希望能在使用redux-thunk中getState或者mapStateToProps中state时IDE提示state类型,这时就需要获取...前言
目前TS官方API还不支持获取函数返回值类型,但是对于函数式编程流行的当今,这个功能非常的重要,比如我们希望能在使用redux-thunk中getState或者mapStateToProps中state时IDE提示state类型,这时就需要获取reducer函数的返回值类型,并且进行联合导出供我们使用。
前置知识
- 高级类型
- 泛型、泛型约束
- 类型推论
- 类型断言
以上几点都能在TS文档中找到非常清晰简洁的解释和例子,这里就不花篇幅解释了。
核心代码
// 声明一个泛型类型别名,返回值与泛型类型相同,入参类型不限制。 type Reverse<T> = (arg: any) => T; // 声明一个泛型方法,入参arg继承泛型约束,返回空对象并断言其类型为T function returnResultType<T>(arg: Reverse<T>): T { return {} as T; } // 调用returnResultType,传入方法 (arg: any) => 3,获得result返回值 const result = returnResultType((arg: any) => 3); // 获取result类型并重名为ResultType type ResultType = typeof result;
代码分析
returnResultType((arg:any)=>3);
调用returnResultType时,由于没有显示声明泛型类型,所以TS只能通过入参来进行类型推论,接着往下面走:
type Reverse<T> = (arg: any) => T;
由于入参的类型为Reverse<T> ,通过入参返回值是3可以推断出:
type Reverse<number> = (arg: any) => number;
由于Reverse的T是根据returnResultType传入的,所以同理得出:
function returnResultType<number>(arg: Reverse<number>): number { return {} as number; }
由于返回值已经进行类型断言为number。所以在typeof result时,可以得出number类型。
该方法确实比较绕,因为存在多个泛型T的来回推论和反推论。
~~~
结合Redux应用
接下来我们通过reducer函数来应用一下:
1.首先编写两个简单的reducer:userReducer和loginReducer
/** * userReducer */ const initUserState = { name: '' } const userReducer = (state = initUserState, action: any) => { switch (action.type) { case 'setName': return { name: 'Larry', ...state }; default: return state; } } /** * loginReducer */ const initLoginState = { token: '' } const loginReducer = (state = initLoginState, action: any) => { switch (action.type) { case 'login': return { token: 'token', ...state }; default: return state; } }
2.在store中
const reducers = combineReducers({ userReducer, loginReducer }); type Reverse<T> = (state: any, action:any) => T; function returnResultType<T>(arg: Reverse<T>): T { return {} as T; } const GlobalState = returnResultType(reducers); type GlobalStateType = typeof GlobalState;
此时的 GlobalStateType 就是我们需要的所有reducer函数返回的对象类型。
最后得到的类型 最后,导出 GlobalStateType,在我们mapStateToProps中使用时就能轻松得到类型:
逃~~~
-
Python async异步编程获取函数返回值
2020-03-14 11:31:05Python async异步编程获取函数返回值 import asyncio import time async def test1(): lit1=[] for i in range(10): await asyncio.sleep(3) # print(i,"test1") lit1.append(i) return l...Python async异步编程获取函数返回值
import asyncio import time async def test1(): lit1=[] for i in range(10): await asyncio.sleep(3) # print(i,"test1") lit1.append(i) return lit1 async def test2(): lit2=[] for i in range(15): await asyncio.sleep(2) # print(i,"test2") lit2.append(i) return lit2 def run(): start_time = time.time() loop = asyncio.get_event_loop() task = loop.create_task(test1()) task1 = loop.create_task(test2()) loop.run_until_complete(task) loop.run_until_complete(task1) loop.close() print(task.result()) print(task1.result()) end_time = time.time() print(end_time-start_time) run()
执行结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
30.025165796279907 -
php获取js函数返回的值_Typescript之获取函数返回值类型
2020-12-05 10:08:49前言目前TS官方API还不支持获取函数返回值类型,但是对于函数式编程流行的当今,这个功能非常的重要,比如我们希望能在使用redux-thunk中getState或者mapStateToProps中state时IDE提示state类型,这时就需要获取...前言
目前TS官方API还不支持获取函数返回值类型,但是对于函数式编程流行的当今,这个功能非常的重要,比如我们希望能在使用redux-thunk中getState或者mapStateToProps中state时IDE提示state类型,这时就需要获取reducer函数的返回值类型,并且进行联合导出供我们使用。
前置知识
- 高级类型
- 泛型、泛型约束
- 类型推论
- 类型断言
以上几点都能在TS文档中找到非常清晰简洁的解释和例子,这里就不花篇幅解释了。
核心代码
// 声明一个泛型类型别名,返回值与泛型类型相同,入参类型不限制。 type Reverse<T> = (arg: any) => T; // 声明一个泛型方法,入参arg继承泛型约束,返回空对象并断言其类型为T function returnResultType<T>(arg: Reverse<T>): T { return {} as T; } // 调用returnResultType,传入方法 (arg: any) => 3,获得result返回值 const result = returnResultType((arg: any) => 3); // 获取result类型并重名为ResultType type ResultType = typeof result;
代码分析
returnResultType((arg:any)=>3);
调用returnResultType时,由于没有显示声明泛型类型,所以TS只能通过入参来进行类型推论,接着往下面走:
type Reverse<T> = (arg: any) => T;
由于入参的类型为Reverse<T> ,通过入参返回值是3可以推断出:
type Reverse<number> = (arg: any) => number;
由于Reverse的T是根据returnResultType传入的,所以同理得出:
function returnResultType<number>(arg: Reverse<number>): number { return {} as number; }
由于返回值已经进行类型断言为number。所以在typeof result时,可以得出number类型。
该方法确实比较绕,因为存在多个泛型T的来回推论和反推论。
~~~
结合Redux应用
接下来我们通过reducer函数来应用一下:
1.首先编写两个简单的reducer:userReducer和loginReducer
/** * userReducer */ const initUserState = { name: '' } const userReducer = (state = initUserState, action: any) => { switch (action.type) { case 'setName': return { name: 'Larry', ...state }; default: return state; } } /** * loginReducer */ const initLoginState = { token: '' } const loginReducer = (state = initLoginState, action: any) => { switch (action.type) { case 'login': return { token: 'token', ...state }; default: return state; } }
2.在store中
const reducers = combineReducers({ userReducer, loginReducer }); type Reverse<T> = (state: any, action:any) => T; function returnResultType<T>(arg: Reverse<T>): T { return {} as T; } const GlobalState = returnResultType(reducers); type GlobalStateType = typeof GlobalState;
此时的 GlobalStateType 就是我们需要的所有reducer函数返回的对象类型。
最后得到的类型 最后,导出 GlobalStateType,在我们mapStateToProps中使用时就能轻松得到类型:
逃~~~
-
python查看函数返回类型_Python从线程获取函数返回值
2020-11-30 06:18:48Python中利用强大的threading模块可以很容易的实现多线程开发,...获取函数返回值的方法可以如下:1). 利用multiprocessing.pool类import timeimport randomdef test1(): # run without multi-threadt = time.time...Python中利用强大的threading模块可以很容易的实现多线程开发,提高运行速度。这一般是对某个进行大量计算操作的的函数进行多线程处理,然后合并各线程的结果。获取函数返回值的方法可以如下:
1). 利用multiprocessing.pool类
import time
import random
def test1(): # run without multi-thread
t = time.time()
list = []
for i in range(10000000):
list.append(random.choice([0,1,2,3,4,5])) # operation
print time.time()-t
return list
def test2(): # run with multi-thread
from multiprocessing.pool import Pool
def func(x):
return random.choice([0,1,2,3,4,5])
t = time.time()
pool = Pool(processes=4) #线程数
results = pool.map_async(func, range(10000000)) # 用法同map,与之相似的还有apply和apply_async
print time.time()-t
return results
r1 = test1()
r2 = test2()
运行结果为7.6s和4.2s。可以看到结果并非线性地减少4倍,这可能与运行结果需要同步有关(没深入研究,猜的)。
2). 利用threading类
def func2(m, results, index):
for i in range(m):
result[index].append(random.choice([0,1,2,3,4,5]))
from threading import Thread
def test4():
threads = [None] * 4
results = [[] for i n range(4)]
for i in range(4):
threads[i] = Thread(target=func2, args=(2500000, results, i))
threads[i].start() # 开始线程
for i in range(4):
threads[i].join() # 等待线程结束后退出
return results
不过要注意的是只有在处理需要占用大量内存的数据的时候才考虑多线程,因为线程之间的同步问题很重要,因此设计函数的时候就需要注意,否则处理不好反而会产生很多问题。
参考
PS:threading模块和multiprocessing模块的文档的说明十分详细,准备好好研究下。
-
Python从线程获取函数返回值
2016-11-30 00:31:00Python中利用强大的threading模块可以很容易的实现多线程开发,提高...获取函数返回值的方法可以如下: 1). 利用multiprocessing.pool类 import time import random def test1(): # run without multi-thread t =... -
Shell函数(函数定义、函数变量、函数调用、函数传参、函数返回值、获取函数返回值)
2019-11-23 15:45:021、函数定义 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。Shell 函数定义的语法格式如下: [function] funname [()]{ 函数体 [return int;] } 格式1: 简化写法,不写 function 关键字: ... -
PHP获取函数返回值的引用
2014-03-19 14:20:00通过在函数前添加&可以获取函数返回值的引用,如:function &test(){return 10;} 转载于:https://www.cnblogs.com/xiaodo0/p/3611313.html -
shell 获取函数返回值
2019-11-12 10:52:25在shell脚本中要获取一个函数的返回值,有两个方法: #! /bin/sh function test() { echo "test here" return 100 } DD=`test` #echo excute over echo "return: $?" echo "DD: $DD" return: 100 DD: test here ... -
shell脚本获取函数返回值
2020-09-28 23:52:26原理:函数内部使用echo输出,调用函数时将输出结果捕获。 缺点:只能输出与返回值相关的内容,且所有使用到的命令(如grep)一定要记得2>&1输出到空设备。 #!/bin/sh function test() { echo 100 } echo $... -
shell调用函数并获取函数返回值
2019-10-10 10:07:23函数 func1() { local tmp=1000 echo $tmp return $?; } 调用函数 mySize=`func1` echo $mySize -
js jquery ajax 获取函数返回值问题
2012-05-14 21:46:49jquery ajax 在获取函数返回值问题上总不如人意,最终找到以下解决办法: //添加async:false.即修改为同步 ;等ajax给bol赋值完毕后,才执行下面的js部分。而异步的话,还没有来得及赋值,就已经return了。 ... -
python多线程获取函数返回值
2019-10-18 15:07:27welcome to my blog 创建线程的方式有两种, 1....封装成类可以获取子线程的返回值 具体例子: 用4个线程分别计算4个列表中元素的平方值 import threading import random class MyClass(threading.Thread): ... -
SHELL中获取函数返回值
2019-11-15 15:07:28终于找到办法了。 function test() { echo abc } ret=`test` echo 1=$ret ret=$(test) echo 2=$ret -
python多进程获取函数返回值
2020-03-06 15:52:43方法一 利用multiprocessing的pipe/queue...利用pyperclip模块,将返回值放在剪贴板中 import pyperclip def f1(): pyperclip.copy('pfs') content = pyperclip.paste() print(content) def f2(): print(1... -
Linux系列:shell获取函数返回值
2020-03-23 19:04:39function findXXX( ){ arr=$2 for i in ${arr[*]}; do if [[ $i == $1 ]] ;then return "1" ; fi done return "0" ; } findValue=$(findXXX ${path[len_path-1]} "${Arr[*]}" ) echo $? -
js函数嵌套调用,无法获取函数返回值
2018-04-03 20:43:10由于使用ajax进行异步请求,导致函数调用a函数,不等ajax执行完,就执行alert,导致无法获取a函数的输出,输出报错。 修改方法: function a() { $.ajax({ url:'www.baidu.com', data: {}, method:'post', ... -
python从多线程中获取函数返回值的方法
2021-01-30 21:23:38方法一:使用队列 import queue ... func_name = sys._getframe().f_code.co_name # 获取函数名 print("%s run ....." % func_name) q.put((x+y,func_name)) def func2(x,y): func_name = sys._g -
从Go调用Python函数并获取函数返回值
2013-10-16 07:56:06<p>I am writing a <a href="http://golang.org/" rel="noreferrer">Go</a> program. From this Go program, I would like to call a Python function defined in another file and receive the function's ... -
python调用go并把结果传回go_从Go调用Python函数并获取函数返回值
2021-02-04 14:49:12从这个Go程序中,我想调用另一个文件中定义的Python函数并接收该函数的返回值,以便在Go程序的后续处理中使用它。不过,我很难在Go程序中获取任何返回的数据。下面是一个我认为可行但显然不行的最低限度的例子:...
-
html2canvas 与 jspdf 相结合生成 pdf 内容被截断问题.txt
-
CT模型机动目标圆周运动跟踪
-
Proxmox VE 6.x 的ceph Luminous 升级 Nautilus (14.2.0 or higher)
-
Raize v6.2.3-RX102.rar
-
ireport 生成一维码 和 二维码 小记
-
vue-cli打包优化之分析工具webpack-bundle-analyzer
-
清局域网缓存.bat
-
苹果正在研究如何改进 Siri,以便其更好地理解口吃用户的需求
-
iptables 企业级防火墙配置(四表五链)
-
LSTM-Neural-Network-for-Time-Series-Prediction-master.rar
-
MATLAB 太阳系运动仿真
-
MySQL 多实例安装 及配置主从复制实验环境
-
VovSoft Watermark Video(视频水印添加软件)官方正式版V1.7 | 视频水印怎么制作.rar
-
实现 MySQL 读写分离的利器 mysql-proxy
-
CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.tar.gz.ab
-
kafka学习梳理
-
直播软件搭建中如何介入iOS海外支付——Braintree+PayPal篇
-
pgyer-upload.gradle
-
面发光激光器及其相关器件
-
servlet.docx