小编Syn*_*oon的帖子

迭代打字稿地图

我正在尝试迭代打字稿地图,但我一直收到错误,我找不到任何解决方案,因为这样一个微不足道的问题.

我的代码是:

myMap : Map<string, boolean>;
for(let key of myMap.keys()) {
   console.log(key);
}
Run Code Online (Sandbox Code Playgroud)

我得到错误:

类型'IterableIteratorShim <[string,boolean]>'不是数组类型或字符串类型.

完整堆栈跟踪:

错误:Typescript发现以下错误:/home/project/tmp/broccoli_type_script_compiler-input_base_path-q4GtzHgb.tmp/0/src/app/project/project-data.service.ts(21,20):输入'IterableIteratorShim <[string ,boolean]>'不是数组类型或字符串类型.在BroccoliTypeScriptCompiler._doIncrementalBuild(/home/project/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:115:19)BroccoliTypeScriptCompiler.build(/ home/project/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:43:10)在/home/project/node_modules/broccoli-caching-writer/index.js:152:21在lib $ rsvp $$ internal $$ tryCatch(/ home/project/node_modules/rsvp) /dist/rsvp.js:1036:16)lib $ rsvp $$内部$$ invokeCallback(/home/project/node_modules/rsvp/dist/rsvp.js:1048:17)在lib $ rsvp $$ internal $$发布(/home/project/node_modules/rsvp/dist/rsvp.js:1019:11)在lib $ rsvp $ asap $$ flush(/home/project/node_modules/rsvp/dist/rsvp.js:1198:9) at_combinedTickCallback(internal/process/next_tick.js:67:7)at process._tickCallback(internal/process/next_tick.js:98:9)

我正在使用angular-cli beta5和typescript 1.8.10,我的目标是es5.有没有人有这个问题?

maps iterator typescript

95
推荐指数
10
解决办法
15万
查看次数

枚举中的枚举作为参数

是不是可以将参数类型设置为枚举?像这样:

private getRandomElementOfEnum(e : enum):string{
    var length:number = Object.keys(e).length;
    return e[Math.floor((Math.random() * length)+1)];
}
Run Code Online (Sandbox Code Playgroud)

如果我这样做,Intellij会将此代码标记为未知.并建议重命名变量,这有意义吗?

private getRandomElementOfEnum(e : any):string{
    var length:number = Object.keys(e).length;
    return e[Math.floor((Math.random() * length)+1)];
}
Run Code Online (Sandbox Code Playgroud)

本规范运作正常.但不像优雅和代码方便.

是否有可能或稍微解决方法将枚举定义为参数?

编辑:

在研究了这些答案之后,我是否可以使用一组定义的枚举来做到这一点,类似于enum1 | enum2 | enum3?

enums typescript

36
推荐指数
7
解决办法
3万
查看次数

TypeScript编译错误无法调用其类型缺少调用签名的表达式

下面的代码让我通过gulp这个错误转发它:

[tsc]> C:/Workarea/MyFirstAngular/src/enum/msg.ts(35,33):错误TS2349:无法调用类型缺少调用签名的表达式.无法编译TypeScript:错误:tsc命令已退出,代码为:2

module MessageUtil {
    enum Morning {
    "Good Morning",
    "Great to see you!",
    "Good day.",
    "Lovely day today, isn't it?",
    "What's up?",
    "Nice to meet you",
}
}
    export class MessageData {
        private getRandomElementOfEnum(e : any):string{
            var length:number = Object.keys(e).length();  //<-- This is Line 35
            return e[Math.floor((Math.random() * length)+1)];
        }
        public getRandMorning():string {
            return this.getRandomElementOfEnum(Morning);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道我的确切错误是什么?

我的设置:-IDEA 14 -Node.js -Gulp -gulp-tsc -gulp-connect(用于Livereload)

code-translation typescript

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

将表单输入值附加到操作URL作为路径

我有一个这样的表格:

<form action="http://localhost/test">
    <input type="text" name="keywords">
    <input type="submit" value="Search">
</form>
Run Code Online (Sandbox Code Playgroud)

如果我输入一个值,让我们说:在文本输入字段中输入'hello'并提交表单,URL如下:http://localhost/test/?keywords=hello.

我希望将值附加到操作路径.所以基本上,在表单提交后,URL应如下所示:

http://localhost/test/hello
Run Code Online (Sandbox Code Playgroud)

html javascript forms url-routing

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

我们应该在TypeScript中使用_.foreach()或更好的for循环原生

我刚刚开始使用TypeScript处理一个新项目.我来自另一个也使用TypeScript的项目.由于TypeScript中的循环原生可用,我们决定(旧项目团队)使用这个.对我来说,相信我的java背景,编写for循环更方便.

现在,在新项目中,他们使用_.foreach()循环来迭代数组.

我想知道的是,和_.foreach()的原生打字稿之间是否有性能差异?

我在jsperf中创建了一个小测试,他们缝合的速度或多或少完全相同......

https://jsperf.com/foreach-vs-forof/12

TypeScript For

for (let num: string of list){
  console.log(num);
}
Run Code Online (Sandbox Code Playgroud)

在JavaScript中

var list = "9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9".split();

//Transpiled TypeScript for of     | **19,937  ±5.04%
for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {   
  var num = list_1[_i];   
  console.log("" + num); 
}

//lodash                           | 20,520  ±1.22%  
_.forEach(list, function(item) {
  console.log("" + item)
});
Run Code Online (Sandbox Code Playgroud)

Imho我更喜欢TypeScript的"原生",因为它对我来说更具可读性.

你们建议使用什么?还有其他要点用于或更好的_.forEach

performance foreach typescript lodash

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

CSS3比例动画关键帧

有一些问题使用css3动画比例,不透明度和其他东西工作,但似乎无法使规模工作.

片段:

    #treeLeaves {
        background: url(https://i.pinimg.com/originals/72/c0/8e/72c08eefa235ae1c8aa72caa71eeba39.jpg);
        background-repeat:no-repeat;
        width:100%;
        height:375px;
        z-index:5;
        position:absolute;
        bottom:140px;
        left:0px;
    }

    @keyframe leaves {
        0% {
            transform: scale(1.0);
            -webkit-transform: scale(1.0);
        }
        100% {
            transform: scale(2.0);
            -webkit-transform: scale(2.0);
        }
    }

    #treeLeaves {
        animation: leaves 5s ease-in-out infinite alternate;
        -webkit-animation: leaves 5s ease-in-out infinite alternate;
    }
Run Code Online (Sandbox Code Playgroud)
<div id="treeLeaves"></div>
<div class="leaves">
Run Code Online (Sandbox Code Playgroud)

基本上它的1 img,我想随着时间的推移不断扩大和缩小.只使用webkit,因为它只需要在chrome中工作.

谢谢.

css3 css-animations

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

为什么通过引用传递在此代码中似乎无效,并且obj1.value仍在函数外部

当我们在函数中将obj2分配给obj1时,按引用传递不起作用,在函数外部它不起作用并且obj1保留其原始值,但是为什么呢?

let obj1 = {
  value: 'a'
}

let obj2 = {
  value: 'b'
}

obj3 = obj2;

function change(obj1, obj2) {
  obj1 = obj2
  obj2.value = 'c'
}


change(obj1, obj2);

console.log(obj1.value)
Run Code Online (Sandbox Code Playgroud)

javascript

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

无法在对象数组中保存整数

我想将Object []中的String解析为Integer并将其保存在同一个地方,如下所示:

public class ArrParseTest {

    public static void main(String[] args) {
        Object[] arr = new Object[2];
        String  input = "Boo;Foo;1000";
        Integer somInt = new Integer(0);

        arr = input.split(";", -1);
        somInt = Integer.parseInt((String) arr[2]);

        arr[2] = somInt;

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我总是收到这个例外:

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Integer
    at main.ArrParseTest.main(ArrParseTest.java:16)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我不能简单地将解析后的对象保存到数组中,尽管如此

Object [] arr = new Object [2];

完全用于在Array中存储不同的对象. …

java arrays parsing

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