我使用这个yeoman发生器制作了一个带有打字稿的角度1项目:https://github.com/FountainJS/generator-fountain-systemjs
它使用SystemJS和jspm来获取依赖关系,但使用npm进行类型定义(使用DefinitelyTyped存储库)。
过去几天我一直在努力尝试导入时刻类型定义。
我已经使用jspm安装了一下,我发现它带有自己的类型定义,所以如果你调用命令npm install @types/moment --save-dev
,你只会得到一个存根和一个弃用警告
这是Moment的存根类型定义 (https://github.com/moment/moment)。时刻提供了自己的类型 定义,所以你不需要安装@ types / moment!
现在,我不知道它是我的编辑器,项目或打字稿设置还是真的打字稿问题,但我似乎无法正确导入时刻。类型定义。
如果我执行import moment from 'moment';
或import * as moment from 'moment';
我在编辑器上遇到此错误(带有atom-typescript的atom,但我在Visual Studio代码上有相同的错误)Cannot find module 'moment'.
尽管有这个错误,当我构建我的应用程序时它工作正常(调用时刻函数工作)。
我已经尝试了很多我在互联网上找到的解决方案(显然,从瞬间导入类型定义是一个常见的问题),但没有一个工作。
昨天我设法通过在moment
内手动创建目录node_modules/@types
并将moment.d.ts
放入其中来使其工作(我必须重命名index.d.ts
)。
由于我并不喜欢这个解决方案,我想至少创建一个类型文件夹,我可以将内容放入其中而无需修改node_modules
结构。所以我创建了一个文件夹custom-types
并将moment
文件夹放在那里,然后将custom-types
添加到tsconfig.json
,我认为这样做会很好但实际上错误再次出现......
现在我没有想法,我也不知道还有什么可以尝试。
这是我当前的tsconfig.json
(在最后一次尝试使我工作的时候,我添加了custom-types
文件夹,其中包含不同的路径,尽管它与{{1}处于同一级别}}文件夹和node_modules
文件)
tsconfig.json
答案 0 :(得分:5)
我一直在TypeScript(IntelliJ)中使用//code borrowed from http://stackoverflow.com/questions/19124752/non-
//recursive-quicksort
public synchronized void qSort(PipedOutputStream pout, int start, int sz) {
Deque<int[]> stack = new ArrayDeque<int[]>();
int first = start;
int last = start + sz - 1;
if(first >= arr.length || last >= arr.length){
System.out.printf("\nSorting error: parameters out of bounds! Start %d, end %d \n", start, last);
return;
}
stack.push(new int[] {first, last});
while(!stack.isEmpty()) {
qsortStep(arr, stack);
}
try { out = new ObjectOutputStream ( pout ); }
catch (IOException e ) { e.printStackTrace(); }
while ( size >= 1 ) {
try {
// System.out.printf("sort is writing %d to pipe.\n", v );
out.writeObject( arr[start] );
out.flush( );
start++; size--;
} catch(IOException e ) { e.printStackTrace(); }
}
}
private synchronized void qsortStep(T[] list, Deque<int[]> stack) {
if(stack.isEmpty())
return;
int temp[] = stack.pop();
int first = temp[0];
int last = temp[1];
int boundLo = first;
int boundHi = last;
//Pivot can be optimized to median of quintiles to mitigate O(n^2) on sorted arrays.
int pivot = last;
/*int sz = last - first;
int pivots[] = {first, first+sz/5, first+2*sz/5, first+4*sz/5, last};
for(int i = 0; i < 5; i++)
for(int j = 4; j > i; j--)
if(arr[pivots[i]].compareTo(arr[pivots[j]]) > 0)
swap(pivots, i, j);*/
pivot = last;
while(first < last) {
//possible opportunity here for early min
if(list[first].compareTo(list[pivot]) >= 0) {
last--;
if(first != last)
swap(list, first, last);
swap(list, last, pivot);
pivot--;
}
else first++;
}
if(boundLo < (pivot - 1))
stack.add(new int[] {boundLo, pivot - 1});
if(boundHi > (pivot + 1))
stack.add(new int[] {pivot + 1, boundHi});
}
,没有额外的工作来安装它的输入。
以下是相关配置:
moment
:
tsconfig.json
强> "moduleResolution": "Node"
部分"types"
没有./package.json
@types/moment
:
./node_modules/moment/
存在./moment.d.ts
有./package.json
"typings": "./moment.d.ts"
是./package.json
当我切换回"version": "2.14.1"
时,TypeScript会说"moduleResolution": "Classic"
。所以这可能是罪魁祸首。