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中完成这样的事情.
谢谢!
是否可以指定GraphQL中的字段应该是黑盒子,类似于Flow具有"任何"类型的方式?我的架构中有一个字段应该能够接受任意值,可以是String,Boolean,Object,Array等.
我已添加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)
我怀疑这是我本地设置的问题.关于这里可能出现什么问题的任何想法?
假设我有一个流类型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) 你如何检查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方面,似乎有两个主要的复杂情况:
似乎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)似乎无法使用类似于对象的符号描述地图形状,如何使用Flow描述Immutable.js Map形状(或者这个信息是否已过时?).
我真的很困惑如何让Flow了解Immutable.js,特别是地图.据我所知,当数据存在于Immutable.js结构而不是普通的JS原语中时,Flow会失去很多关于代码库的智能.
在我的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.
我正在努力创建一个用户配置文件页面,使用位于的铁路由器localhost:3000/:username.配置文件页面应具有以下特征:
公共视图和私有视图应存在于同一 URL路径中.根据客户端的凭据,他们会看到一个或另一个没有重定向到其他页面.未找到的页面也不应该重定向,这样如果输入无效的用户名,用户仍然可以在浏览器URL栏中看到无效的URL.
我的router.js文件:
this.route('profile', {
controller: 'ProfileController',
path: '/:username'
});
Run Code Online (Sandbox Code Playgroud)
在内ProfileController,我正在努力拼凑以下内容:
onBeforeAction - 显示加载屏幕; 确定用户名是否存在(即URL是否有效)
waitOn- username在删除加载屏幕之前等待检索数据onAfterAction - 删除加载屏幕谢谢!
我有一个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) 在我的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) 在Meteor中,有没有办法指定仅在开发环境中使用的包,或仅用于生产环境?当我通过astmospherejs.com添加软件包时,它们都会被.meteor/packages按时间顺序排列到文件中.基本上,我正在寻找什么是ruby Gemfile,你可以在其中指定不同的环境.谢谢!
javascript ×8
meteor ×4
flowtype ×3
mongodb ×2
android ×1
casting ×1
fbsdk ×1
graphql ×1
graphql-js ×1
immutable.js ×1
iron-router ×1
node.js ×1
react-native ×1
types ×1