小编bch*_*rny的帖子

我如何在打字稿中表达这一点?

假设我有一个界面A:

interface A {
  foo: number
  bar: string
}
Run Code Online (Sandbox Code Playgroud)

我有一个通用类型Option:

type Option<T> = {
  map: () => T
}
Run Code Online (Sandbox Code Playgroud)

然后我BA和创建一个新的界面Option:

interface B {
  foo: Option<number>
  bar: Option<string>
}
Run Code Online (Sandbox Code Playgroud)

如何让这个操作更通用?IE浏览器.我想要的API是:

type B = Lift<A>
Run Code Online (Sandbox Code Playgroud)

在哪里Lift自动将每个成员映射A到一个Option.请注意,A可以包含任意类型的任意数量的成员.

我该如何实施Lift?如果在TypeScript中无法做到这一点,那么有没有人有Scala/Haskell解决方案?

haskell types scala typescript purescript

15
推荐指数
2
解决办法
978
查看次数

摩纳哥编辑器中的自定义背景颜色?

查看 Monaco 示例和类型,看起来可以通过defineThemeAPI配置主题。我正在尝试将 VSCode 主题应用于 Monaco 实例,并且正在努力解决如何设置背景颜色(对于整个编辑器,而不仅仅是令牌)。

规则被定义为具有以下形状的对象数组:

IThemeRule {
    token: string;
    foreground?: string;
    background?: string;
    fontStyle?: string;
}
Run Code Online (Sandbox Code Playgroud)

token设置编辑器背景应该是什么?

更一般地说,有没有一种好方法可以将此主题应用于 Monaco 实例,而无需从 VSCode 源代码中删除主题解析逻辑?在快速尝试删除逻辑之后,似乎一个简单的自定义解析器(即解析 JSON 主题定义 -> IThemeRules 的平面列表)是更好的方法。

javascript monaco-editor

6
推荐指数
2
解决办法
4606
查看次数

加速Angular $ compile函数

我正在针对新范围手动编译模板:

var scope = _.assign($rootScope.$new(true), {
  foo: 1,
  bar: 2
})
var element = angular.element('<my-element foo="foo" bar="bar"></my-element>')
$compile(element)(scope)
element.appendTo(container)
Run Code Online (Sandbox Code Playgroud)

运行基本配置文件后,此代码的最慢部分是$compile每次编译需要大约1毫秒.当用户滚动时,我需要一次编译~100个元素.

在第一轮$ compiles之后,我可以应用很多优化来加速编译,但我想加快第一轮100次编译.我还希望将模板保留在Angularland中,并避免注入原始HTML.

怎么样?

编辑:从下面复制+粘贴我的评论,以查看将来看到此主题的任何人的可见性:

好吧,它终于有道理了.如果将函数作为第二个参数传递给$ link,angular将为您克隆节点.如果不这样做,它将在每次调用$ link时重用相同的节点.无论哪种方式,您都可以同步访问返回的节点(作为$ link的返回值)和异步访问(在回调中).这是一个设计不佳的API,我在Angular的问题跟踪器中提出了一个问题 - github.com/angular/angular.js/issues/11824

javascript frontend angularjs angularjs-directive angularjs-scope

4
推荐指数
1
解决办法
1198
查看次数

如何禁用Monaco上下文菜单?

我正在使用monaco-editor,我正在尝试为Command + Enter添加自定义处理程序.但是当我按下命令键时,会显示Monaco上下文菜单.是否可以禁用上下文菜单,或将其重新绑定到另一个键?

javascript monaco-editor

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

反应动画不起作用

我有一个Notification类来管理从UI创建/删除通知.我可以成功显示/隐藏通知,但通知不会动画输入/输出.

import React from 'react'
import addons from 'react/addons'

const ReactCSSTransitionGroup = React.addons.CSSTransitionGroup

let id = 0
export default class Notification {

  constructor (content, className) {

    let div = document.createElement('div')
    document.body.appendChild(div)

    let onClose = () => React.unmountComponentAtNode(div)

    React.render(
      <NotificationElement className={ className } id={ id++ } onClose={ onClose }>
        { content }
      </NotificationElement>,
      div
    )

  }

}

class NotificationElement extends React.Component {

  constructor(_) {
    super(_)
  }

  render() {

    const className = `Notification ${ this.props.className }`

    return (
      <ReactCSSTransitionGroup transitionName="slideIn"> …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

2
推荐指数
1
解决办法
7958
查看次数

泛型类型参数的T,U,V约定来自何处?

的Java,C#和打字稿(亦称语言的太阳/ Hejlsberg家庭)使用T,U,V等来表示泛型类型参数.表面上看,因为T代表"类型",U并且V遵循T字母表.

在另一方面,Scala的使用A,B,C等,和OCaml中和Haskell使用a,bc.

这些惯例来自哪里?难道是因为函数式语言更接近数学证明,在那里?,??被用约定?


类似,但没有回答我的问题:C#泛型命名约定来自哪里?.

c# java generics programming-languages scala

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

从数据构造函数的不相交联合中获取价值

给定这种类型的构造函数:

data DatabaseItem = DbString String
                  | DbNumber Integer
                  | DbDate   UTCTime
Run Code Online (Sandbox Code Playgroud)

我可以编写一个函数来解包a DatabaseItem,例如UTCTime:

getDate :: DatabaseItem -> Maybe UTCTime
getDate (DbDate a) = Just a
getDate _ = Nothing
Run Code Online (Sandbox Code Playgroud)

我不想为3个数据构造函数中的每一个编写这样的函数,而是想要一个通用函数(这也意味着我不再需要它Maybe),但是我无法弄清楚如何编写它.我试过了:

unwrap :: DatabaseItem -> a
unwrap (i a) = a

-- error: Parse error in pattern: i
Run Code Online (Sandbox Code Playgroud)

和:

unwrap :: DatabaseItem -> String | Integer | UTCTime
unwrap (DbString a) = a
unwrap (DbDate a) = a
unwrap (DbNumber a) = a

-- error: …
Run Code Online (Sandbox Code Playgroud)

haskell

0
推荐指数
1
解决办法
123
查看次数