小编Kub*_*oda的帖子

有没有办法"提取"TypeScript接口属性的类型?

假设库X的打包文件包含一些接口.

interface I1 {
    x: any;
}

interface I2 {
    y: {
        a: I1,
        b: I1,
        c: I1
    }
    z: any
}
Run Code Online (Sandbox Code Playgroud)

为了使用这个库,我需要传递一个与其完全相同的对象I2.y.我当然可以在源文件中创建相同的界面:

interface MyInterface {
    a: I1,
    b: I1,
    c: I1
}

let myVar: MyInterface;
Run Code Online (Sandbox Code Playgroud)

但是后来我承担了使用库中的那个保持最新的负担,而且它可能非常大并导致大量代码重复.

因此,有没有办法"提取"接口的这个特定属性的类型?类似的东西let myVar: typeof I2.y(不起作用,导致"找不到名字I2"错误).提前致谢.


编辑:在TS Playground中玩了一下后,我注意到以下代码完全符合我的要求:

declare var x: I2;
let y: typeof x.y;
Run Code Online (Sandbox Code Playgroud)

但是,它需要x声明一个冗余变量.我正在寻找一种方法来实现这个没有这个声明.

typing typescript definitelytyped

53
推荐指数
4
解决办法
2万
查看次数

什么是声明性环境记录,它与激活对象有何不同?

好的,所以我最近一直在阅读ES-5词汇环境范围,我不确定我是否真的理解变量在EcmaScript中的存储方式.我做了一些研究,但没有澄清我的信息,只给我带来了两个问题.所以它们是:

  1. 第一个是关于ES-3 activations objects/ variable objects.在阅读了ES-3规范和Internet上的一些资源后,我可以假设它们只是普通的对象,例如像那些创建的那样new Object,但没有一个消息来源直接说"是的,这只是一个简单的对象".此外,Dmitry Soshnikov在他的博客上写道(重点是我的):

    在示意性和示例中,可以将变量对象呈现为普通的ECMAScript对象

    而且引用并不能让我确定激活对象到底是什么.所以这是第一个问题:激活对象是一个常规的EcmaScript对象吗?如果没有,那么它又是什么呢?

  2. 在我们现在的ES-5中object environment records,它似乎与ES-3激活对象或多或少相同,并且declarative environment records在函数和try-catch语句中替换了激活对象.因此,假设对象环境记录只是普通的EcmaScript对象,那么什么是声明环境记录?规范并没有澄清这一点,而且,从我在那里读到的,我无法想象这不是作为一个对象实现的.因此,如果声明性环境记录不是ES对象,那么它们是什么以及它们在代码执行期间如何实现和表示?

非常感谢您提前为我提供这个主题.

编辑:我想我需要澄清这个问题是什么.我想知道的主要事情是激活对象/对象环境记录和声明性环境记录之间的确切区别.这是我最感兴趣的.

javascript ecmascript-5

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

“pages_show_list”权限未列在 Facebook 应用的“向此提交中添加项目”中

我有一个 Facebook 网络应用程序,它刚刚经过 Facebook 审查和批准,所以它通常是公开的。该应用程序需要能够获得有关用户帐户中的数据,所以它需要无论是manage_pagespages_show_list许可从用户到正常工作。我不需要管理用户页面,只列出它们,所以我想请求pages_show_list登录权限。但是,当我转到应用程序设置,然后“状态和审核”->“审核中的项目”并单击“将项目添加到此提交”时,我会看到项目列表,但pages_show_list“登录权限部分”下没有。

我如何请求该项目?

附带说明:我知道 Facebook 最近在 Graph API v2.5 中添加了此权限,这会不会有问题?我的应用程序曾经向 API 的早期版本发出请求,但没有选择要使用的版本的通用开关(是吗?),因此我认为 Facebook 不会因此限制我的此功能。

facebook facebook-graph-api

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