小编Ric*_*ter的帖子

嵌套的Reduce函数/递归/函数编程/树遍历

我一直reduce遇到这样的情况,我最终嵌套很多函数来深入到对象中.拉出逻辑很难,因为在底部我需要访问沿途遍历的各种键.基本上,我正在寻找一种更好的方法来实现以下目标:

import { curry } from 'lodash/fp'
import { fromJS } from 'immutable'

const reduce = curry((fn, acc, it) => it.reduce(fn, acc))

describe('reduceNested', () => {
  const input = fromJS({
    a1: {
      b1: {
        c1: {
          d1: {
            e1: 'one',
            e2: 'two',
            e3: 'three'
          },
          d2: {
            e1: 'one',
            e2: 'two',
            e3: 'three'
          }
        },
        c2: {
          d1: {
            e1: 'one',
            e2: 'two'
          }
        }
      }
    },
    a2: {
      b1: {
        c1: {
          d1: {
            e1: 'one'
          }, …
Run Code Online (Sandbox Code Playgroud)

javascript recursion reduce functional-programming traversal

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

Haskell:如何检查IO上的运行时类型?

我正在通过Haskell上的一些介绍性材料,并尝试完成此愚蠢的Rock,Paper和Scissors命令行实现。

我认为输入的类型防护足以使编译器确信输入是类型RPS,但是可惜不是。

如何告诉编译器输入数据是一种类型还是另一种类型?


data RPS = Rock | Paper | Scissors

_shoot :: RPS -> RPS -> String
_shoot Rock Paper = "Paper beats rock, you win!"
_shoot Paper Rock = "Paper beats rock, you loose."
_shoot Rock Scissors = "Rock beats scissors, you loose."
_shoot Scissors Rock = "Rock beats scissors, you win!"
_shoot Paper Scissors = "Scissors beats paper, you win!"
_shoot Scissors Paper = "Scissors beats paper, you loose!"
_shoot Rock Rock = "Tie!"
_shoot …
Run Code Online (Sandbox Code Playgroud)

io haskell typechecking

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

你在哪里把CSRF令牌放在Relay/GraphQL中?

我正在尝试使用我的Laravel服务器设置Relay和GraphQL.我已成功设置Laravel以服务GraphQL.

在过去,为了使用jQuery进行ajax调用,我在master.blade.php中添加了以下内容:

 <meta name="csrf-token" content="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)

以及我的main.js文件中的以下内容:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
Run Code Online (Sandbox Code Playgroud)

我的GraphQL端点当前正在返回令牌不匹配异常.在我看来,Relay需要以与jQuery.ajax类似的方式将csrf-token传递给服务器.它去哪儿了?

csrf laravel reactjs graphql relayjs

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

打字稿,导入 * as,没有带括号属性访问器的索引签名

我是打字稿的新手。我有一个从 javascript 转换而来的大型程序。我正在检查错误并添加类型,但我不知道如何解决这个问题。

myModule.ts

export const foo = { ... }
export const bar = { ... }
Run Code Online (Sandbox Code Playgroud)

我的文件

import * as myModule from './myModule'

function doesSomething(input: string) {
    return myModule[input]
}
Run Code Online (Sandbox Code Playgroud)

打字稿编译器错误:元素隐式具有“任何”类型,因为类型“typeof“./myModule””没有索引签名。

我曾尝试声明一个模块和一个命名空间或尝试实现一个接口,但似乎不起作用。我认为解决方案是在单独的文件中声明模块,但我似乎无法让 TS 识别它。这就是我认为会起作用的:

myModule.d.ts

interface MyModule {
    [key: string]: any
}

declare module 'myModule' {
    const myModule: MyModule
    export = myModule
}
Run Code Online (Sandbox Code Playgroud)

也许添加一个三斜线指向 myFile:

我的文件

/// <reference path="./myModule.d.ts" />
import * as myModule from './myModule'

function doesSomething(input: string) {
    return myModule[input]
}
Run Code Online (Sandbox Code Playgroud)

但这并没有真正改变任何东西。

typescript

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

Typescript &gt; 泛型 &gt; 联合约束

为什么打字稿编译器会抛出以下错误:

Operator '+' cannot be applied to types 'T' and 'T'.,

编译时:

export const addNumbersOrCombineStrings = <T extends string | number>(
  param1: T,
  param2: T
): T => param1 + param2
Run Code Online (Sandbox Code Playgroud)

typescript typescript-generics

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

Typescript能够执行简单的功能组合吗?

Typescript能够执行简单的功能组合吗?我写出了以下基本实现,以进行组合,映射和筛选以进行测试。

类型和功能在下面设置,然后在之后实现。

javascript似乎还不错,但是使用时打字稿显示出误报compose。具体而言,似乎可以理解第一个函数将要返回的内容,但随后它不会将该信息传递给第二个函数的输入。设置后在下面进一步解释。

import { curry } from './curry'

type f1<a, b> = (a: a) => b
type f2_2<a, b, c> = (a: a, b: b) => c
type f2_1<a, b, c> = (a: a) => (b: b) => c
type f2<a, b, c> = f2_2<a, b, c> & f2_1<a, b, c>
type p<a> = (a: a) => boolean

//====[compose]================================
type b3 = <a, b, c>(f: f1<b, c>, g: f1<a, b>, a: a) => c
type b2 = …
Run Code Online (Sandbox Code Playgroud)

functional-programming typescript typescript-generics typescript-typings

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