小编Jac*_*pie的帖子

如何将Shell补全推迟到bash和zsh中的另一个命令?

我试图编写一个将其他Shell实用程序包装到单个CLI中的Shell脚本实用程序,并试图使Shell完成在zsh和bash中工作。

例如,假设CLI名为util

util aws [...args] #=> runs aws
util docker [...args] #=> runs docker
util terraform [...args] #=> runs terraform
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想要的是zsh和bash补全中的一种方式,它能够独立于包装脚本的补全实现说“像其他命令Y一样完成此子命令X”。

就像是:

compdef 'util aws'='aws'
compdef 'util docker'='docker'
compdef 'util terraform'='terraform'
Run Code Online (Sandbox Code Playgroud)

扩展目标将是允许对另一个二进制文件中的子命令完成任意子命令:

util aws [...args] #=> completes against `aws`
util ecr [...args] #=> completes against `aws ecr`
Run Code Online (Sandbox Code Playgroud)

有可能吗?我一直在尝试模拟单个二进制文件的完成脚本,但是在编写其他完成脚本的方式上有很大的不同。

bash zsh bash-completion zsh-completion completion

12
推荐指数
1
解决办法
356
查看次数

获取子类独有的属性类型

是否可以构造一个 TypeScript 类型来提取特定类所独有的属性名称,而不是从其父类继承?例如,如果我知道父类(Playground Link),这会起作用:

class Parent {
    hello = 'hello'
}

class Child extends Parent {
    world = 'world'
}

type OwnProps<Base, T extends Base> = Exclude<keyof T, keyof Base>

declare const ownProps: OwnProps<Parent, Child> // "world"
Run Code Online (Sandbox Code Playgroud)

但是,我想要一种方法来完成相同类型的事情,但没有明确指定基类,如下所示:

type OwnProps<T, Base = T extends ???> = Exclude<keyof T, keyof Base>

declare const ownProps: OwnProps<Child> // "world"
Run Code Online (Sandbox Code Playgroud)

这可能吗?我可以使用某种条件魔法来代替???让我infer输入Child类扩展的类型吗?

typescript

9
推荐指数
1
解决办法
129
查看次数

是否可以修复第三方广告的内存泄漏?

我在Playlist.com上使用Google DFP广告获得了一致的内存泄漏 - 让标签保持打开状态,它始终使用越来越多的内存(仅在广告启用时).

可以在此处找到重现泄漏的示例测试页面:http://dl.dropboxusercontent.com/u/6278910/ad-memory-leak.html.

我们有什么可以帮助减轻泄漏吗?在经济上,显然关闭广告不是一个可能的解决方案.

编辑: 您可以在Chrome中打开开发人员工具并尝试使用内存时间轴 - 每次加载广告时,他们都会占用更多内存.

javascript memory-leaks ads google-dfp

7
推荐指数
1
解决办法
935
查看次数

如何在TypeScript中使用已知键和未知键键入对象

我正在寻找一种为以下对象创建TypeScript类型的方法,该对象具有两个已知键和一个具有已知类型的未知键:

interface ComboObject {
  known: boolean
  field: number
  [U: string]: string
}

const comboObject: ComboObject = {
  known: true
  field: 123
  unknownName: 'value'
}
Run Code Online (Sandbox Code Playgroud)

该代码无效,因为TypeScript要求所有属性都与给定索引签名的类型匹配。但是,我不想使用索引签名,我想在一个我知道其类型但不知道其名称的地方键入一个字段。

到目前为止,我唯一的解决方案是使用索引签名并设置所有可能类型的联合类型:

interface ComboObject {
  [U: string]: boolean | number | string
}
Run Code Online (Sandbox Code Playgroud)

但这有很多缺点,包括允许在已知字段上输入不正确的类型以及允许任意数量的未知键。

有没有更好的方法?使用TypeScript 2.8条件类型有帮助吗?

typescript conditional-types

6
推荐指数
3
解决办法
3078
查看次数

在查询执行错误期间,Google BigQuery超出了资源

有关如何使此查询返回Google BigQuery结果的任何想法?我收到资源超出错误...数据集中有大约2B行.我正在尝试获取每个user_id最多的艺术家ID.

select user_id, artist, count(*) as count
from [legacy20130831.merged_data] as d
group each by user_id, artist
order by user_id ASC, count DESC
Run Code Online (Sandbox Code Playgroud)

sql google-bigquery

3
推荐指数
1
解决办法
1593
查看次数