小编Mr.*_*din的帖子

TypeScript:向Enum添加函数

是否可以在TypeScript中向Enum类型添加函数?

例如:

enum Mode {
    landscape,
    portrait,

    // the dream...
    toString() { console.log(this); } 
}
Run Code Online (Sandbox Code Playgroud)

要么:

class ModeExtension {
    public toString = () => console.log(this);
}

enum Mode extends ModeExtension {
    landscape,
    portrait,
}
Run Code Online (Sandbox Code Playgroud)

当然这个toString()函数会包含类似a的东西switch但是一个用例会沿着以下几行流动:

class Device {
    constructor(public mode:Mode) {
        console.log(this.mode.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

我理解为什么扩展一个enum可能是一个奇怪的事情,只是想知道它是否可能.

enums typescript

55
推荐指数
4
解决办法
3万
查看次数

在React中将更多参数传递给纯渲染函数

最近我一直试图把我的React组件写成"Pure Functions",我注意到有时候我想要的东西感觉很像state.我正考虑将我state的第二个参数传递给我的组件.我可以通过使用两个参数调用我的组件作为普通函数来实现这一点,props并且state.

例如:

// abstracted to it's own module
const useState = (Component, state = {}) => {
  return class extends React.Component {
    state = createState(this, state); // will traverse and update the state

    render() {
      const { props, state } = this;
      return Component(props, state); // <-- call the Component directly
    }
  };
};

const Component = (props, { index, increase }) => (
  <div onClick={increase} {...props}>
    Click me to increase: …
Run Code Online (Sandbox Code Playgroud)

reactjs

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

F#递归行为

我最近开始学习F#,因为我对大多数功能概念都很陌生,所以我倾向于为自己写一些小例子,并用测试结果检查我的前提.

现在我似乎无法理解以下代码的结果以及它为什么会这样表现.使用案例:我掷四个六面骰子,只有当它们的总和大于20时才返回它们的总数.

这是我的代码:

let rnd = System.Random()
let d6 () = rnd.Next(1, 7)
let rec foo () =
    // create a list of 4 d6 throws and print out the list
    let numbers = seq { for i in 1 .. 4 -> d6() }
    numbers |> Seq.iter( fun n -> printf "%i " n )
    printfn "\n"

    // sum the list and return the sum only when the sum is greater than 20
    let total = numbers |> Seq.sum …
Run Code Online (Sandbox Code Playgroud)

recursion f#

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

如何用 JavaScript 构建事件生成器

我正在尝试构建一种方法来创建可以生成 DOM 事件的生成器。更一般地说,我想创建一种将事件系统转换为产生事件的异步系统的方法。

我的初始代码示例有效,但我可以看到resolve从 Promise 中提升该函数的问题,以便在事件进入后我可以调用该函数。

class EventPropagation {
  constructor(id) {
    const button = document.getElementById(id);
    let _resolve;

    button.addEventListener("click", event => {
      if (_resolve) {
       _resolve(event);
      }
    });

    let _listen = () => {
      return new Promise(resolve => {
       _resolve = resolve;
      });
    }

    this.subscribe = async function*() {
      const result = await _listen();
      yield result;
      yield * this.subscribe();
    }
  }
}

async function example() {
  const eventPropagation = new EventPropagation("btn");
  for await (const event of eventPropagation.subscribe()) {
    console.log(event); …
Run Code Online (Sandbox Code Playgroud)

javascript async-await

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

标签 统计

async-await ×1

enums ×1

f# ×1

javascript ×1

reactjs ×1

recursion ×1

typescript ×1