-
Notifications
You must be signed in to change notification settings - Fork 112
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
API 泛型添加 #177
Comments
|
已在 3.3.0 中支持了 如果一个接口同时支持 Promisify 和泛型(比如 // 回调风格
const res = wx.getStorage<string>({
key: 'key',
success(res) {
expectType<string>(res.data)
}
})
expectType<void>(res) // failing
wx.getStorage({
key: 'key',
success(res) {
expectType<any>(res.data)
expectNotType<string>(res.data)
}
})
// Promise 风格
wx.getStorage<string>({ key: 'key' })
.then((res) => {
expectType<string>(res.data)
})
wx.getStorage({ key: 'key' })
.then((res) => {
expectType<any>(res.data)
expectNotType<string>(res.data)
}) 现在的类型实现其实是有问题的,现在的类型是: declare function getStorage<
T = any,
U extends GetStorageOption<T> = GetStorageOption<T>
>(option: U): PromisifySuccessResult<U, GetStorageOption<T>>; 这个定义在上面标注 这个 issue 暂时先不关闭,一是用来跟进其他可以使用泛型的接口,二是看看有没有更好的定义方式 |
wx.cloud那边我记得应该有不少可以完善完善,回头我看一下列出来。 另外我觉得这个通过函数重载的方式应该可以解决吧,稍后我也试一下。 |
类似这种接口声明个人感觉加了范型会更好用(指的是根据选择器的不同,返回的默认 value 的类型 /**
* value 改变时触发 change 事件
*
* event.detail = {value}
*
* 当 mode = region 时 (最低基础库: 1.4.0)
*
* value 改变时触发 change 事件,event.detail = {value, code, postcode},其中字段 code 是统计用区划代码,postcode 是邮政编码
*/
type PickerChange<
Mark extends IAnyObject = IAnyObject,
TargetDataset extends IAnyObject = IAnyObject
> = CustomEvent<
{
/**
* 当 mode = selector 时, 返回当前选择的 value
*
* 当 mode = multiSelector 时, 返回一个索引数组
*
* 当 mode = time | date 时, 返回 `"12:01"` | `"2016-09-01"`
*
* 当 mode = region 时, 返回 `["广东省", "广州市", "海珠区"]`
*/
value: string | number[] | [string, string, string]
/** 统计用区划代码 当 mode = region 时有效 (最低基础库: 1.4.0) */
code: [string, string, string]
/** 邮政编码 当 mode = region 时有效 (最低基础库: 1.4.0) */
postcode: string
},
Mark,
TargetDataset
> |
希望能够为所有返回 any 的api添加泛型,如:
改为
再如:
改为
我个人是非常抵制 any 在 typescript 的使用的,遍地 any 约等于没用 typescript。
而满地 as 显然不够优雅:
所以希望最好能够支持
The text was updated successfully, but these errors were encountered: