我一直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
我正在通过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) 我正在尝试使用我的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传递给服务器.它去哪儿了?
我是打字稿的新手。我有一个从 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)
但这并没有真正改变任何东西。
为什么打字稿编译器会抛出以下错误:
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能够执行简单的功能组合吗?我写出了以下基本实现,以进行组合,映射和筛选以进行测试。
类型和功能在下面设置,然后在之后实现。
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
typescript ×3
csrf ×1
graphql ×1
haskell ×1
io ×1
javascript ×1
laravel ×1
reactjs ×1
recursion ×1
reduce ×1
relayjs ×1
traversal ×1
typechecking ×1