小编Jon*_*rsi的帖子

流程:通过扩展另一种类型来创建流类型

type someType = {
  keyOne: string,
  keyTwo: string,
};

type someOtherType = {
  keyOne: string,
  keyTwo: string,
  keyThree: string,
};
Run Code Online (Sandbox Code Playgroud)

这两种类型都是包含keyOne和的对象,keyTwo唯一的区别是后者用附加键扩展前者keyThree.

而不是编写重复的代码,是否可以someOtherType通过扩展来构建流类型someType?在我看来,我想到了ES6对象休息/传播,但我不确定如何在Flow中完成这样的事情.

谢谢!

javascript casting type-conversion flowtype

21
推荐指数
2
解决办法
9902
查看次数

GraphQL Blackbox /"任何"类型?

是否可以指定GraphQL中的字段应该是黑盒子,类似于Flow具有"任何"类型的方式?我的架构中有一个字段应该能够接受任意值,可以是String,Boolean,Object,Array等.

javascript graphql graphql-js

20
推荐指数
5
解决办法
6641
查看次数

React Native Android:Method不会覆盖或实现超类型的方法

我已添加react-native-fbsdk到我的反应原生项目,并在iOS上建立良好.但在android方面,我无法建立项目.在尝试编译react-native-fbsdk时,我正在尝试:"方法不会覆盖或实现超类型的方法"

21:41:11.863 [INFO] [org.gradle.api.internal.tasks.compile.JdkJavaCompiler] Compiling with JDK Java compiler API.
21:41:12.100 [ERROR] [system.err] /Users/joncursi/Sites/joncursi/redbirdNative/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBSDKPackage.java:61: error: method does not override or implement a method from a supertype
Run Code Online (Sandbox Code Playgroud)

哪个指向react-native-fbsdk中的以下代码段:

@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
    return Collections.emptyList();
}
Run Code Online (Sandbox Code Playgroud)

当我删除时@Override,这个错误的特定实例消失了,但我在另一个模块中遇到了同样的错误,例如react-native-image-picker:

:react-native-image-picker:compileReleaseJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).
/Users/joncursi/Sites/joncursi/redbirdNative/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerPackage.java:34: error: method does not override or implement a method from a supertype
  @Override
  ^
1 error
Run Code Online (Sandbox Code Playgroud)

我怀疑这是我本地设置的问题.关于这里可能出现什么问题的任何想法?

android react-native fbsdk react-native-fbsdk

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

流:动态生成字符串联合类型?

假设我有一个流类型Suit,我想把它组成另一个叫做的类型Card.

// types.js

type Suit =
  | "Diamonds"
  | "Clubs"
  | "Hearts"
  | "Spades";


type Card = {
  ...
  suit: Suit,
  ...
}
Run Code Online (Sandbox Code Playgroud)

而不是直接在suit.js中对Suit字符串进行硬编码,是否可以Suit基于JavaScript原语(数组)动态生成类型?说...

// constants.js

const SUITS = ['Diamonds', 'Clubs', 'Hearts', 'Spades'];
Run Code Online (Sandbox Code Playgroud)

通过这种方式,套装只能定义一次,并且可以在JavaScript构造中定义,以便在应用程序的其他部分中重复使用.例如,应用程序中其他位置需要访问所有可用套装的组件:

// component.js

SUITS.map((suit: Suit): void => { ... });
Run Code Online (Sandbox Code Playgroud)

javascript types flowtype

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

流程:使用fromJS()来检查复杂的不可变形状?

你如何检查fromJS使用Flow 生成的Immutable.JS数据结构的形状?可以使用对象文字表示法非常准确地键入普通的旧JS blob:

type ObjectShape = {
  a: number,
  b: string,
  c: {
    d: number,
  },
  e: Array<number>
};

const obj: ObjectShape = { // hyper-accurate
  a: 1,
  b: '2',
  c: {
    d: 3,
  },
  e: [4]
}
Run Code Online (Sandbox Code Playgroud)

但是,在Immutable.js方面,似乎有两个主要的复杂情况:

  1. 似乎Immutable.js的fromJS方法返回any(https://github.com/facebook/immutable-js/blob/master/type-definitions/immutable.js.flow#L764),因此以下内容不会被捕获为错误流:

    const map: boolean = fromJS(obj) // this is totally not true, but Flow can't tell
    
    Run Code Online (Sandbox Code Playgroud)
  2. 似乎无法使用类似于对象的符号描述地图形状,如何使用Flow描述Immutable.js Map形状(或者这个信息是否已过时?).

我真的很困惑如何让Flow了解Immutable.js,特别是地图.据我所知,当数据存在于Immutable.js结构而不是普通的JS原语中时,Flow会失去很多关于代码库的智能.

javascript flowtype immutable.js

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

Meteor - 模板被销毁时停止跟踪器自动运行(用户离开页面)

在我的Meteor模板中,ohlcInit()当Mongo中有新数据时,我有一个名为autorun 的函数:

Template.Live.rendered = function(){

  function ohlcInit() {
    // computations run here
  }

  Tracker.autorun(function() {
      ohlcInit();
  });
};
Run Code Online (Sandbox Code Playgroud)

当用户在页面/模板上进行定义时,这非常有用,但只要用户导航到站点上的另一个URL并且模板被销毁,就会在控制台中抛出错误:

Tracker重新计算函数的异常:undefined不是函数TypeError:undefined不是函数在ohlcInit(http:// localhost:3000/client/views/live/live.js?dd5fb618daf9ea9e233c37caaa99002009e987:271:33)的http:// 在Tracker.Computation上的localhost:3000/client/views/live/live.js?dd5fb618daf9ea9e233c37caaa9ed200fe3e987:306:5在Tracker.Computation._compute(http:// localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:288:36) .rcompute(http:// localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:302:14)在Tracker.flush(http:// localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:430:14)

当用户导航到新的URL /模板时,如何安全地停止/结束自动运行计算?
我在用iron:router.

javascript mongodb meteor meteor-tracker

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

Meteor:使用Iron Router的用户配置文件页面

我正在努力创建一个用户配置文件页面,使用位于的铁路由器localhost:3000/:username.配置文件页面应具有以下特征:

  • 公共视图 - 任何人都可以看到有关用户的基本信息
  • 私人视图 - 如果客户在登录时访问他或她自己的个人资料页面,则会显示他或她的敏感用户数据,并且他们具有编辑功能
  • 加载视图 - 在提取用户配置文件数据时,显示加载屏幕
  • 找不到视图 - 如果在URL中输入了无效的用户名,则返回未找到的页面.

公共视图和私有视图应存在于同一 URL路径中.根据客户端的凭据,他们会看到一个或另一个没有重定向到其他页面.未找到的页面也不应该重定向,这样如果输入无效的用户名,用户仍然可以在浏览器URL栏中看到无效的URL.

我的router.js文件:

this.route('profile', {
    controller: 'ProfileController',
    path: '/:username'
  });
Run Code Online (Sandbox Code Playgroud)

在内ProfileController,我正在努力拼凑以下内容:

  • onBeforeAction - 显示加载屏幕; 确定用户名是否存在(即URL是否有效)
    • 显示未找到的视图,私人个人资料或公开个人资料
  • waitOn- username在删除加载屏幕之前等待检索数据
  • onAfterAction - 删除加载屏幕

谢谢!

javascript meteor iron-router

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

如何在单个redux可观察史诗中等待/屈服于多个动作?

我有一个redux Saga,每次调度'WATCHLIST_FETCH_REQUEST'时会运行三种不同的动作:

function* watchFetchWatchlist() {
  yield takeLatest('WATCHLIST_FETCH_REQUEST', fetchWatchlist);
}


function* fetchWatchlist() {
  const activity = 'ACTIVITY_FETCH_WATCHLIST';
  yield put(
    addNetworkActivity(activity) // Action 1: enables a global loading indicator before request is made
  );
  const { response, error } = yield call(
    api.fetchWatchlist // make an API request
  );
  yield put(
    removeNetworkActivity(activity) // Action 2: removes the above global loading indicator after request completes
  );
  if (response) {
    yield put(
      updateUserWatchlist(response) // Action 3a: updates Redux store with data if response was …
Run Code Online (Sandbox Code Playgroud)

redux-observable

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

MongoDB $ addtoSet和$ set在同一个操作中

在我的Meteor/javascript应用程序中,我试图通过$addToSet该文档的某个部分更新特定的MongoDB文档,然后$set在同一文档的不同部分.这两个部分之间没有重叠,所以从我在线阅读它应该是安全的.但我似乎无法使语法正确.如何在一个javascript命令中执行这两个操作?下面的工作是两个单独的命令,我认为如果它们只能组合到一个Mongo中,它会更快.

Collection.update(
  {_id: documentId},
  {$addToSet:
    {data:
      {$each: newData}
    }
  }
);
Collection.update(
  {_id: documentId},
  {$set:
    {lastTxn: lastTxn,
     updatedAt: new Date()}
  }
);
Run Code Online (Sandbox Code Playgroud)

javascript mongodb node.js meteor mongodb-query

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

Meteor - 如何在开发或生产中使用包

在Meteor中,有没有办法指定仅在开发环境中使用的包,或仅用于生产环境?当我通过astmospherejs.com添加软件包时,它们都会被.meteor/packages按时间顺序排列到文件中.基本上,我正在寻找什么是ruby Gemfile,你可以在其中指定不同的环境.谢谢!

javascript meteor

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