小编azz*_*azz的帖子

TypeScript TS2322:类型'typeof Foo'不能分配给'IFoo'类型

我正在尝试使用TypeScript的ES2015模块语法编写一些类.每个类在.d.ts文件中实现一个接口.

这是问题的MWE.

.d.ts我有一个文件中:

interface IBar {
  foo: IFoo;
  // ...
}

interface IFoo {
  someFunction(): void;
  // ...
}
Run Code Online (Sandbox Code Playgroud)

我的出口是:

// file: foo.ts
export default class Foo implements IFoo {
  someFunction(): void {} 
  // ... 
}
// no errors yet.
Run Code Online (Sandbox Code Playgroud)

我的导入是:

import Foo from "./foo";

export class Bar implements IBar {
   foo: IFoo = Foo;
}
Run Code Online (Sandbox Code Playgroud)

这里的错误是:

error TS2322: Type 'typeof Foo' is not assignable to type 'IFoo'.
Property 'someFunction' is missing in type 'typeof Foo'. …
Run Code Online (Sandbox Code Playgroud)

javascript typescript ecmascript-6

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

使用反射调用带有数组参数的方法

我试图编写一个方法,通过将一个字符串数组作为参数传递给该方法,从另一个类执行静态方法.

这就是我所拥有的:

public static void
executeStaticCommand(final String[] command, Class<?> provider)
{
    Method[] validMethods = provider.getMethods();

    String javaCommand = TextFormat.toCamelCase(command[0]);

    for (Method method : validMethods) {
        if (method.getName().equals(javaCommand)) {
            try {
                method.invoke(null, new Object[] { new Object[] { command } });
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                Throwable ex = e.getCause();
                ex.printStackTrace();
            }
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这样:

String[] args = new String[] { "methodName", "arg1", "arg2" }; 
executeStaticCommand(args, ClassName.class);
Run Code Online (Sandbox Code Playgroud)

应执行此操作:

public class ClassName {
    public …
Run Code Online (Sandbox Code Playgroud)

java reflection method-invocation

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

是否有内置的方法来重命名整个脚手架?

我正在使用Rails 3.2,并开始使用脚手架并从中构建,但已经意识到我需要重命名整个脚手架(模型,视图,控制器db:migrate等).是否有内置方法来执行此操作,还是应该手动执行此操作?

ruby-on-rails

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

为什么Java掩码移位操作数为0x1F?

在Java中:

(0xFFFFFFFF <<  1) = 0xFFFFFFFE = 0b1111111111111110
                :         :               :
(0xFFFFFFFF << 30) = 0xE0000000 = 0b1110000000000000
(0xFFFFFFFF << 30) = 0xC0000000 = 0b1100000000000000
(0xFFFFFFFF << 31) = 0x80000000 = 0b1000000000000000
Run Code Online (Sandbox Code Playgroud)

然而:

(0xFFFFFFFF << 32) = 0xFFFFFFFF = 0b1111111111111111
Run Code Online (Sandbox Code Playgroud)

逻辑上这没有任何意义,但我认为发生的事情是Java执行类似于以下操作的操作:

a << (b % Integer.SIZE) [编辑,显然:] a << (b & 0x1F)

这也适用于>>>>>,太.

显然,移位> = 32(在整数的情况下)会从数据类型中删除所有数据,但有时这很有用.例如:

int value = 0x3F43F466; // any value
int shift = 17; // any value >= 0
int carry = value …
Run Code Online (Sandbox Code Playgroud)

java bit-manipulation

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

没有参数的方法泛型

假设我有一个像这样的方法:

static class Example 
{
    public static <N extends Number> Number getOddBits(N type)
    {
        if (type instanceof Byte) return (byte)0xAA;
        else if (type instanceof Short) return (short)0xAAAA;
        else if (type instanceof Integer) return 0xAAAAAAAA;
        else if (type instanceof Float) return Float.intBitsToFloat(0xAAAAAAAA);
        else if (type instanceof Long) return 0xAAAAAAAAAAAAAAAAL;
        else if (type instanceof Double) return Double.longBitsToDouble(0xAAAAAAAAAAAAAAAAL);
        throw new IllegalArgumentException();
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法的实际细节并不重要.但是,要调用此方法,我们使用:

Example.<Float>getOddBits(0f);
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否可以在没有传统参数的情况下编写这样的方法.没有超载,最终没有拳击.

理想情况下:

Example.<Byte>getOddBits();
Run Code Online (Sandbox Code Playgroud)

java generics

7
推荐指数
2
解决办法
174
查看次数

TypeScript不提供函数名称

我有一些打字稿代码,我正在做一些我需要能够访问的元编程instance.func.name,但TypeScript省略了编译JS中的函数名.

打字稿:

class ClassName {
    // ... 
    func(): ReturnType {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

编译的JavaScript:

// ...
ClassName.prototype.func = function () {
    // ... 
};
Run Code Online (Sandbox Code Playgroud)

期望的JavaScript:

ClassName.prototype.func = function func() {
    // ...                          ^^^^
};
Run Code Online (Sandbox Code Playgroud)

是否存在我缺少的编译器选项,或者我可以在TypeScript中使用的关键字来实现此目的?

javascript reflection typescript

7
推荐指数
2
解决办法
4206
查看次数

使用browserify-shim伪造全局jQuery?(找不到模块'jquery')

关于jQuery插件,我遇到了一个关于Browserify的令人费解的问题.由于我有多个单独的子应用程序包,我<script>在HTML中有一些全局库作为标记,以防止重复.

我正在使用gulp,browserify-shimbabelify创建我的捆绑.

package.json:

"dependencies": {
  "jquery.cookie": "^1.4.1",
  ...
},
"browserify-shim": {
  "jquery": "global:jQuery",
   ...
},
"browserify": {
  "transform": [
    "browserify-shim"
  ]
}
Run Code Online (Sandbox Code Playgroud)

base.html:(在生产中这些将是CDN链接)

<!--[if lt IE 9]><script src="/bower_components/jquery-legacy/jquery.min.js"></script><![endif]-->
<!--[if gte IE 9]><!-->
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
<!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)

在我的一个源文件中:

import $ from 'jquery'; // this works
import 'jquery.cookie'; // this crashes browserify
Run Code Online (Sandbox Code Playgroud)

错误信息:

Error: Cannot find module 'jquery' from '/path/to/node_modules/jquery.cookie'
Run Code Online (Sandbox Code Playgroud)

jQuery 没有和npm一起安装,因为我不希望它进入我的捆绑包.

我猜这里的问题是require('jquery')内部有一个调用jquery.cookie.js没有得到解决.

如何使用browserify-shim"伪装"全局jQuery实例的存在?


注意:这个解决方案 …

jquery jquery-cookie browserify browserify-shim

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

Google Feed Loader API忽略XML属性

转换为JSON时,Google的Feed加载程序似乎忽略了属性.我正在使用jQuery通过AJAX获取feed.实际的RSS XML提要可以看到这里,并从AJAX调用的响应可以看出这里.

我需要访问标签的url属性<enclosure>,但都不会出现在响应中.

作为参考,我使用的代码是:

function getFeed(url) {
    url = 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' 
            + encodeURIComponent(url);
    $.ajax({
        type: 'GET',
        url: url,
        dataType: 'jsonp',
        cache: false,
        success: function(d) { alert(JSON.stringify(d); },
        error: function(s,x) { alert(x); }
    }); 
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何获得XML响应,因为更改dataType : 'xml'会导致HTTP错误.JSON是首选.

有任何想法吗?

xml rss jquery json google-feed-api

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

将Java文档导出为XML

我希望将HTML SE 7文档从HTML导出为可解析的XML.

无论是使用像Perl这样的脚本语言,还是直接从Java(可能使用Eclipse)完成,我都愿意接受建议.也许某人已经做过了吗?

我需要API的Javadoc中提供的大部分数据,因此需要手动执行永久性操作.我不是在寻找代码,我可以自己解决这个问题,我只是在寻找一些关于这样做的想法,因为我确信这是一种"简单"的方式,而且我不想浪费太多时间这样做,后来发现我可以在另一个方面做得更快.

并不重要,但我会用C#阅读XML.

我知道这是一个奇怪的问题,但我不知道还能在哪里问.

java xml documentation perl java-7

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

使用PHP按文件编号排序图像

这是我目前正在使用的代码的简化版本.

$files = glob('*.{jpg,png,gif}', GLOB_BRACE);
$counter = 1;
echo '<div id="images">';
foreach($files as $file) {
    if ($counter % $IMGS_PER_ROW == 1)
        echo '<div>';
    echo '<img src="' . $file . '"/>';
    if ($counter % $IMGS_PER_ROW == 0)
    echo '</div>';
    $counter++; 
}
echo '</div>';
Run Code Online (Sandbox Code Playgroud)

这样做,是搜索目录,并找到它找到的每个图像,它内联打印到屏幕,$IMGS_PER_ROW每行最多图像.

这样做的问题,是让我们说我们有15幅图像,用他们的头衔各自的图像(即数量0.jpg,1.jpg...... 14.jpg),他们将被以基于其作为字符串名称打印.(即0.jpg,1.jpg,10.jpg,11.jpg,12.jpg,13.jpg,14.jpg,2.jpg,...).

显然,我希望它们按数字顺序排列,因此排序算法是不可避免的(我认为).我对php不太强大,并且想知道是否有一种简单的O(n ^ 2)方法按数字顺序排序这个文件位置数组,而不是通过字符串比较.

谢谢你的帮助.

php sorting image

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

如何为fieldset边框创建背景颜色

我是HTML的新手.所以,我怀疑如何为字段集边框创建背景颜色或图像?我能否使用字段集的正常颜色值或在字段集中创建背景颜色需要任何特殊颜色代码?任何信息都会有所帮助.我已经有HTML的背景图像,我想将背景颜色应用于字段集边框.

html css

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