Вопросы по тегу: typescript

(257)

Как можно импортировать moment.js с машинописным текстом?

Я пытаюсь изучить Typescript. Хотя я не думаю, что это уместно, я использую VSCode для этой демонстрации.У меня есть package.json, в котором есть эти фрагменты:{ "devDependencies": { "gulp": "^3.9.1", "jspm": "^0.16.33", "typescript": "^1.8.10" }, "jspm": { "moment": "npm:moment@^2.12.0" } } Тогда у меня есть класс Typescript main.js вот так:import moment from 'moment'; export class Main { } Мой gulpfile.js выглядит так:var gulp = require('gulp'); var typescript = require('gulp-tsb'); var compilerOptions = { "rootDir": "src/", "sourceMap": true, "target": "es5", "module": "amd", "declaration": false, "noImplicitAny": false, "noResolve": true, "removeComments": true, "noLib": false, "emitDecoratorMetadata": true, "experimentalDecorators": true }; var typescriptCompiler = typescript.create(compilerOptions); gulp.task('build', function() { return gulp.src('/src') .pipe(typescriptCompiler()) .pipe(gulp.dest('/dest')); }); Когда я запускаю сборку gulp, я получаю сообщение: "../main.ts(1,25): Cannot file module 'moment'."Если я использую import moment = require('moment');, тогда jspm будет работать и вставлять модуль при запуске приложения, но я все еще получаю сообщение об ошибке сборки. Я также пробовал:npm install typings -g typings install moment --ambient --save Вместо того, чтобы решить проблему, она ухудшилась. Теперь я получаю указанную выше ошибку при сборке, а также следующее: "../typings/browser/ambient/moment/index.d.ts(9,21): Не удается найти пространство имен 'moment'."*100003 *Если я перейду к файлу, предоставленному путем набора текста, и добавлю внизу файла:declare module "moment" { export = moment; } Я могу избавиться от второй ошибки, но мне по-прежнему нужен оператор require, чтобы заставить момент работать в моем файле main.ts, и я все еще получаю первую ошибку сборки.Нужно ли мне создать свой собственный файл .d.ts на данный момент или я просто упускаю какую-то часть установки?
p

peinearydevelopment

6 лет назад

Ответов: 7

Как использовать модули npm из машинописного текста?

Пробую машинопись. Он отлично работает на сцене hello world. Сейчас я пытаюсь использовать модуль npm:index.ts =import _ = require('lodash') console.log(_.toUpper('Hello, world !')) Это не работает : tsc index.ts -> Не удается найти модуль «lodash». (2307) node-ts index.js -> Не удается найти модуль «lodash». (2307) Просмотр документации машинописного текста и в гугле не помог. Другие вопросы S/O либо остались без ответа (здесь и здесь), либо не имеют отношения к делу.Элементы : машинопись 1.8 последняя Да, lodash установлен npm i --save lodash и существует в моей файловой системе (проверено) Я также сделал typings i --save lodash варианты импорт * as _ from 'lodash' или const _ = require('lodash') тоже не работают Я попытался настроить параметры tsconfig.json, как было предложено в других ответах. не работает Как использовать пакет npm в typescript ??
O

Offirmo

6 лет назад

Ответов: 5

Использование массива из Observable Object с ngFor и Async Pipe Angular 2

Я пытаюсь понять, как использовать Observables в Angular 2. У меня есть эта служба:import {Injectable, EventEmitter, ViewChild} from '@angular/core'; import {Observable} from "rxjs/Observable"; import {Subject} from "rxjs/Subject"; import {BehaviorSubject} from "rxjs/Rx"; import {Availabilities} from './availabilities-interface' @Injectable() export class AppointmentChoiceStore { public _appointmentChoices: BehaviorSubject = new BehaviorSubject({"availabilities": [''], "length": 0}) constructor() {} getAppointments() { return this.asObservable(this._appointmentChoices) } asObservable(subject: Subject) { return new Observable(fn => subject.subscribe(fn)); } } Этот BehaviorSubject получает новые значения из другой службы:that._appointmentChoiceStore._appointmentChoices.next(parseObject) Я подписываюсь на него в виде наблюдаемого в компоненте, в котором я хочу его отобразить:import {Component, OnInit, AfterViewInit} from '@angular/core' import {AppointmentChoiceStore} from '../shared/appointment-choice-service' import {Observable} from 'rxjs/Observable' import {Subject} from 'rxjs/Subject' import {BehaviorSubject} from "rxjs/Rx"; import {Availabilities} from '../shared/availabilities-interface' declare const moment: any @Component({ selector: 'my-appointment-choice', template: require('./appointmentchoice-template.html'), styles: [require('./appointmentchoice-style.css')], pipes: [CustomPipe] }) export class AppointmentChoiceComponent implements OnInit, AfterViewInit { private _nextFourAppointments: Observable constructor(private _appointmentChoiceStore: AppointmentChoiceStore) { this._appointmentChoiceStore.getAppointments().subscribe(function(value) { this._nextFourAppointments = value }) } } И попытка отобразить в представлении так: {{appointment | date: 'EEE' | uppercase}} Однако доступность еще не является свойством наблюдаемого объекта, поэтому она выдает ошибку, хотя я определяю ее в интерфейсе доступности следующим образом:export interface Availabilities { "availabilities": string[], "length": number } Как я могу асинхронно отобразить массив из наблюдаемого объекта с помощью асинхронного канала и *ngFor? Я получаю сообщение об ошибке:browser_adapter.js:77 ORIGINAL EXCEPTION: TypeError: Cannot read property 'availabilties' of undefined
C

C. Kearns

6 лет назад

Ответов: 4

Как объявить канал глобально для использования в разных модулях?

У меня есть пользовательский канал с именем CurrConvertPipe import {Pipe, PipeTransform} from '@angular/core'; import {LocalStorageService} from './local-storage'; @Pipe({name: 'currConvert', pure: false}) export class CurrConvertPipe implements PipeTransform { constructor(private currencyStorage: LocalStorageService) {} transform(value: number): number { let inputRate = this.currencyStorage.getCurrencyRate('EUR'); let outputputRate = this.currencyStorage.getCurrencyRate(localStorage.getItem('currency')); return value / inputRate * outputputRate; } } Мне нужно использовать это в двух разных модулях, Module1 и Module2. Когда я импортирую в Module1 и Module2, я получаю сообщение об ошибке, говорящее, что он должен быть объявлен в модуле более высокого уровня.Итак, я объявляю канал внутри app.module.tsimport './rxjs-extensions'; import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { CurrConvertPipe } from './services/currency/currency-pipe'; @NgModule({ imports: [ BrowserModule, FormsModule, HttpModule, AppRoutingModule, Module1, Module2 ], declarations: [ AppComponent, CurrConvertPipe ], providers: [ ], bootstrap: [AppComponent] }) export class AppModule { } Но когда я использую его в Module1, выдает ошибку Канал 'currConvert' не найден
S

Sajeetharan

5 лет назад

Ответов: 5

Как назначить правильный тип для React.cloneElement при передаче свойств дочерним элементам?

Я использую React и Typescript. У меня есть компонент реакции, который действует как оболочка, и я хочу скопировать его свойства своим дочерним элементам. Я следую руководству React по использованию элемента клонирования: https://facebook.github.io/react/blog/2015/03/03/react-v0.13-rc2.html#react.cloneelement. Но при использовании React.cloneElement я получаю следующую ошибку от Typescript:Argument of type 'ReactChild' is not assignable to parameter of type 'ReactElement'.at line 27 col 39 Type 'string' is not assignable to type 'ReactElement'. Как я могу назначить правильный ввод для react.cloneElement?Вот пример, который повторяет приведенную выше ошибку:import * as React from 'react'; interface AnimationProperties { width: number; height: number; } /** * the svg html element which serves as a wrapper for the entire animation */ export class Animation extends React.Component{ /** * render all children with properties from parent * * @return {React.ReactNode} react children */ renderChildren(): React.ReactNode { return React.Children.map(this.props.children, (child) => { return React.cloneElement(child, { //
D

David C

5 лет назад

Ответов: 2

Что такое «тип экспорта» в Typescript?

Я заметил следующий синтаксис в Typescript.export type feline = typeof cat; Насколько мне известно, тип не является встроенным базовым типом, а также интерфейсом или классом. На самом деле это больше похоже на синтаксис псевдонимов, но я не могу найти ссылку, чтобы проверить свою догадку.Так что же означает приведенное выше утверждение?
h

hackjutsu

5 лет назад

Ответов: 1

Как перезаписать неверное определение типа TypeScript, установленное через @types/package

Скажите, что я хочу использовать модуль dotenv в своем проекте TypeScript и установить его .d.ts, используя npm install @types/dotenv --save. Затем я понимаю, что типы неверны. Например, функция config() возвращает не логическое значение, а более богатый объект.Как быть в этой ситуации? Должен ли я просто скопировать загруженное определение типа в другой файл, обновить его вручную и удалить @types/dotenv? Есть ли способ лучше? (Мне нужно исправить сразу, а не после того, как оно будет объединено мейнтейнерами основной ветки разработки.)
B

Borek Bernard

5 лет назад

Ответов: 4

Angular2 canActivate() вызывает асинхронную функцию

Я пытаюсь использовать защиту маршрутизатора Angular2, чтобы ограничить доступ к некоторым страницам в моем приложении. Я использую аутентификацию Firebase. Чтобы проверить, вошел ли пользователь в Firebase, мне нужно вызвать .subscribe() для объекта FirebaseAuth с обратным вызовом. Это код охранника:import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; import { AngularFireAuth } from "angularfire2/angularfire2"; import { Injectable } from "@angular/core"; import { Observable } from "rxjs/Rx"; @Injectable() export class AuthGuard implements CanActivate { constructor(private auth: AngularFireAuth, private router: Router) {} canActivate(route:ActivatedRouteSnapshot, state:RouterStateSnapshot):Observable|boolean { this.auth.subscribe((auth) => { if (auth) { console.log('authenticated'); return true; } console.log('not authenticated'); this.router.navigateByUrl('/login'); return false; }); } } При переходе на страницу, на которой есть защита, в консоль выводится либо аутентифицировано, либо не аутентифицировано (после некоторой задержки в ожидании ответа от firebase) . Однако навигация никогда не завершается. Кроме того, если я не вошел в систему, меня перенаправляют на маршрут /login. Итак, у меня проблема: return true не отображает запрошенную страницу пользователю. Я предполагаю, что это потому, что я использую обратный вызов, но я не могу понять, как это сделать иначе. Есть мысли?
E

Evan Salter

6 лет назад

Ответов: 9

Вызов функции по событию клика в Angular 2

Как объявить функцию внутри компонента (машинописный текст) и вызвать ее по событию клика в Angular 2? Ниже приведен код для той же функциональности в Angular 1, для которой мне требуется код Angular 2: //контроллерapp.controller('myCtrl', ['$scope', function($cope) { $scope.myFunc= { console.log("function called"); }; }]);
A

Azhar Khan

5 лет назад

Ответов: 5

'router-outlet' не является известным элементом

У меня есть проект mvc 5 с угловым интерфейсом. Я хотел добавить маршрутизацию, как описано в этом руководстве https://angular.io/guide/router. Итак, в моем _Layout.cshtml я добавил и создал свою маршрутизацию в моем app.module. Но когда я запускаю это, я получаю следующую ошибку: Error: Template parse errors: 'router-outlet' is not a known element: 1. If 'router-outlet' is an Angular component, then verify that it is part of this module. 2. If 'router-outlet' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. (" dashboard [ERROR ->] "): ng:///AppModule/AppComponent.html@5:0 В моем app.component строка выдает ошибку, сообщающую мне, что Visual Studio не может разрешить тег «маршрутизатор-выход». Любые предложения, как я могу исправить эту ошибку? Я пропустил ссылку или импорт или просто что-то упускаю из виду?Ниже приведены мои package.json, app.component и app.modulepackage.json:{ "version": "1.0.0", "name": "app", "private": true, "scripts": {}, "dependencies": { "@angular/common": "^4.2.2", "@angular/compiler": "^4.2.2", "@angular/core": "^4.2.2", "@angular/forms": "^4.2.2", "@angular/http": "^4.2.2", "@angular/platform-browser": "^4.2.2", "@angular/platform-browser-dynamic": "^4.2.2", "@angular/router": "^4.2.2", "@types/core-js": "^0.9.41", "angular-in-memory-web-api": "^0.3.2", "bootstrap": "^3.3.7", "core-js": "^2.4.1", "graceful-fs": "^4.0.0", "ie-shim": "^0.1.0", "minimatch": "^3.0.4", "reflect-metadata": "^0.1.10", "rxjs": "^5.0.1", "systemjs": "^0.20.12", "zone.js": "^0.8.12" }, "devDependencies": { "gulp": "^3.9.1", "gulp-clean": "^0.3.2", "gulp-concat": "^2.6.1", "gulp-tsc": "^1.3.2", "gulp-typescript": "^3.1.7", "path": "^0.12.7", "typescript": "^2.3.3" } } app.module.ts:импорт {NgModule} из '@angular/core'; импортировать {BrowserModule} из '@angular/platform-browser'; импортировать {FormsModule} из '@angular/forms'; импортировать { RouterModule, Routes } из '@angular/router'; импортировать {AppComponent} из './app.component'; импортировать {DashboardComponent} из "./dashboard/dashboard.component" const appRoutes: Маршруты = [ { дорожка: '', перенаправить на: '/ панель инструментов', pathMatch: «полный», компонент: DashboardComponent }, { путь: 'приборная панель', компонент: DashboardComponent } ]; @NgModule({ импорт: [ RouterModule.forRoot(appRoutes), БраузерМодуль, ФормыМодуль ], экспортирует: [RouterModule], декларации: [ AppComponent, DashboardComponent ], начальная загрузка: [AppComponent] }) экспортный класс AppModule { } app.component.ts:import {Component} из '@angular/core'; @Компонент({ селектор: 'мое-приложение', шаблон: ` {{название}} панель управления ` }) экспортный класс AppComponent { title = 'приложение загружено'; }
M

Molo

5 лет назад

Ответов: 18

Повторяющийся идентификатор «LibraryManagedAttributes»

У меня та же проблема, что и в:React typescript (2312,14): повторяющийся идентификатор «LibraryManagedAttributes»иОшибка TypeScript: повторяющийся идентификатор «LibraryManagedAttributes»Но я никак не могу найти решение.Я уже обновился до последних версий node/npm/yarn/typescript. Также пробовал понизить. Ничего не помогает.yarn build --verbose yarn run v1.9.4 $ react-scripts-ts build --verbose Creating an optimized production build... Starting type checking and linting service... Using 1 worker with 2048MB memory limit ts-loader: Using typescript@3.0.3 and C:\dev\project\frontend\tsconfig.prod.json Warning: member-ordering - Bad member kind: public-before-private Failed to compile. C:/dev/project/frontend/node_modules/@types/prop-types/node_modules/@types/react/index.d.ts (2312,14): Duplicate identifier 'LibraryManagedAttributes'. error Command failed with exit code 1. --verbose почему-то не дает мне больше информации.Как я вижу LibraryManagedAttributes определяется в: node_modules/@types/react/index.d.ts node_modules/@types/prop-types/node_modules/@types/react/index.d.ts node_modules/@types/react-overlays/node_modules/@types/react/index.d.ts .... Откуда это? Как этого избежать?Я хочу выяснить, откуда возникает эта ошибка, чтобы сообщить о ней нужному объекту, но я не знаю, с чего начать.Что еще я могу попробовать?
S

Spenhouet

3 года назад

Ответов: 16

Как внедрить сервис в класс (не компонент)

Я хочу внедрить сервис в класс, который не является компонентом.Например:Мой сервисimport {Injectable} from '@angular/core'; @Injectable() export class myService { dosomething() { // implementation } } МойКлассimport { myService } from './myService' export class MyClass { constructor(private myservice:myService) { } test() { this.myservice.dosomething(); } } Это решение не работает (думаю, потому что MyClass еще не создан экземпляр).Есть ли другой способ использования службы в классе (не в компоненте)? Или вы сочтете мой дизайн кода неуместным (для использования службы в классе, который не является компонентом)?Спасибо.
E

Elec

5 лет назад

Ответов: 5

Машинописный текст: не найдена сигнатура индекса с параметром типа «строка» для типа «{ «A»: строка; }

У меня есть ванильный код javascript, который принимает ввод строки, разбивает строку на символы, а затем сопоставляет эти символы с ключом объекта.DNATranscriber = { "G":"C", "C": "G", "T": "A", "A": "U" } function toRna(sequence){ const sequenceArray = [...sequence]; const transcriptionArray = sequenceArray.map(character =>{ return this.DNATranscriber[character]; }); return transcriptionArray.join(""); } console.log(toRna("ACGTGGTCTTAA")); //Returns UGCACCAGAAUU Это работает, как и ожидалось. Теперь я хотел бы преобразовать это в машинопись.class Transcriptor { DNATranscriber = { G:"C", C: "G", T: "A", A: "U" } toRna(sequence: string) { const sequenceArray = [...sequence]; const transcriptionArray = sequenceArray.map(character =>{ return this.DNATranscriber[character]; }); } } export default Transcriptor Но я получаю следующую ошибку. Элемент неявно имеет тип "любой", поскольку выражение типа "строка" >не может использоваться для индексации типа "{ "A": строка; }'. Не найдена сигнатура индекса с параметром типа "строка" для типа >'{ "A": строка; }'.ts(7053) Я думал, что проблема в том, что мне нужно, чтобы ключ объекта был строкой. Но преобразовать их в строки не получилось.DNATranscriber = { "G":"C", "C": "G", "T": "A", "A": "U" } Меня это очень смущает. В нем говорится, что для моего объекта не существует индексной подписи с типом строки. Но я уверен, что это так. Что я делаю не так?Изменить. Я решил эту проблему, присвоив объекту DNATranscriber тип any.DNATranscriber: any = { "G":"C", "C":"G", "T":"A", "A":"U" }
o

onTheInternet

3 года назад

Ответов: 18

Ошибка машинописного текста «Невозможно записать файл... потому что он перезапишет входной файл».

В моем проекте Typescript 2.2.1 в Visual Studio 2015 Update 3 я получаю сотни ошибок в списке ошибок, например: Невозможно записать файл 'C:/{{my-project}}/node_modules/buffer-shims/index.js', поскольку это приведет к перезаписи входного файла. Все время так выглядит. На самом деле это не мешает сборке, и все работает просто отлично, но список ошибок отвлекает и трудно найти «настоящие» ошибки, когда они происходят.Вот мой файл tsconfig.json{ "compileOnSave": true, "compilerOptions": { "baseUrl": ".", "module": "commonjs", "noImplicitAny": true, "removeComments": true, "sourceMap": true, "target": "ES5", "forceConsistentCasingInFileNames": true, "strictNullChecks": true, "allowUnreachableCode": false, "allowUnusedLabels": false, "noFallthroughCasesInSwitch": true, "noImplicitReturns": true, "noImplicitThis": true, "noUnusedLocals": true, "noUnusedParameters": true, "typeRoots": [], "types": [] //Explicitly specify an empty array so that the TS2 @types modules are not acquired since we aren't ready for them yet. }, "exclude": ["node_modules"] } Как избавиться от всех этих ошибок?
C

Ceebs

5 лет назад

Ответов: 26

Jest - Простые тесты медленные

Я использую Jest для тестирования углового приложения, и выполнение простых тестов занимает очень много времени, и я не могу понять, почему.Моя настройка Jest в package.json:"jest": { "modulePaths": [ "/src", "/node_modules" ], "testPathIgnorePatterns": [ ".git/.*", "node_modules/.*" ], "transformIgnorePatterns": [ "node_modules/.*", ".*\\.js" ], "setupTestFrameworkScriptFile": "/src/setupJest.js", "preset": "jest-preset-angular", "testEnvironment": "jsdom", "testRegex": "src/app/.*\\.spec\\.ts$", "moduleFileExtensions": [ "ts", "js", "json" ], "verbose": true, "cacheDirectory": ".jest-cache", "coveragePathIgnorePatterns": [ ".*\\.(shim\\.ngstyle|ngfactory)\\.ts" ], "globals": { "ts-jest": { "tsConfigFile": "./tsconfig.json" }, "__TRANSFORM_HTML__": true } } Файл установки My Jest: 'use strict'; require('core-js/es6/reflect'); require('core-js/es7/reflect'); require('zone.js'); require('zone.js/dist/proxy.js'); require('zone.js/dist/sync-test'); require('zone.js/dist/async-test'); require('zone.js/dist/fake-async-test'); require('jest-zone-patch'); const getTestBed = require('@angular/core/testing').getTestBed; const BrowserDynamicTestingModule = require('@angular/platform-browser-dynamic/testing').BrowserDynamicTestingModule; const platformBrowserDynamicTesting = require('@angular/platform-browser-dynamic/testing') .platformBrowserDynamicTesting; getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting() ); Вот мой простой тест:fdescribe('RichTextEditorComponent', () => { it('should be fast', () => { expect(true).toBeTruthy(); }); }); Кто-нибудь знает, почему это занимает более 9 секунд?
T

Tucker

5 лет назад

Ответов: 6

Angular2 - параметры запроса Http POST

Я пытаюсь сделать POST-запрос, но он не работает:testRequest() { var body = 'username=myusername?password=mypassword'; var headers = new Headers(); headers.append('Content-Type', 'application/x-www-form-urlencoded'); this.http .post('/api', body, { headers: headers }) .subscribe(data => { alert('ok'); }, error => { console.log(JSON.stringify(error.json())); }); } Я в основном хочу воспроизвести этот http-запрос (не ajax), как будто он был создан html-формой:URL-адрес: /apiПараметры: имя пользователя и пароль
C

Christopher

6 лет назад

Ответов: 9

Нашел синтетическое свойство @enterAnimation. Включите в свое приложение либо "BrowserAnimationsModule", либо "NoopAnimationsModule". угловой4

При запуске Karma для тестирования моего приложения Angular4 я получаю эту ошибку Обнаружено синтетическое свойство @enterAnimation. Пожалуйста, включите в свое приложение "BrowserAnimationsModule" или "NoopAnimationsModule". хотя я уже импортировал модуль в app.module.ts // animation module import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; ... @NgModule({ imports: [... BrowserAnimationsModule, ... ], и в моем component: import { Component, OnInit } from '@angular/core'; import { trigger, state, style, animate, transition } from '@angular/animations'; @Component({ selector: 'app-about', animations: [ trigger( 'enterAnimation', [ transition(':enter', [ style({ transform: 'translateX(100%)', opacity: 0 }), animate('500ms', style({ transform: 'translateX(0)', opacity: 1 })) ]), transition(':leave', [ style({ transform: 'translateX(0)', opacity: 1 }), animate('500ms', style({ transform: 'translateX(100%)', opacity: 0 })) ]) ] ), trigger( 'enterAnimationVetically', [ transition(':enter', [ style({ transform: 'translateY(100%)', opacity: 0 }), animate('500ms', style({ transform: 'translateY(0)', opacity: 1 })) ]), transition(':leave', [ style({ transform: 'translateY(0)', opacity: 1 }), animate('500ms', style({ transform: 'translateY(100%)', opacity: 0 })) ])] ) ], ... Приложение отлично работает с ng serve однако я получил эту ошибку с кармой.
M

Melchia

4 года назад

Ответов: 8

Как правильно поймать исключение из http.request()?

Часть моего кода: import {Injectable} from 'angular2/core'; import {Http, Headers, Request, Response} from 'angular2/http'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/operator/map'; @Injectable() export class myClass { constructor(protected http: Http) {} public myMethod() { let request = new Request({ method: "GET", url: "http://my_url" }); return this.http.request(request) .map(res => res.json()) .catch(this.handleError); // Trouble line. // Without this line code works perfectly. } public handleError(error: Response) { console.error(error); return Observable.throw(error.json().error || 'Server error'); } } myMethod() создает исключение в консоли браузера: ИСХОДНОЕ ИСКЛЮЧЕНИЕ: TypeError: this.http.request(...).map(...).catch не является функцией
N

Nick

6 лет назад

Ответов: 5

Типы TypeScript в пакетах npm @types org

Я заметил, что существует организация npm @types, которая содержит пакеты для ввода текста, но не могу найти по ней никакой документации. Как они предназначены для использования?Предназначен ли он для использования с инструментом typings? Если да, то как их установить? Например, есть пакет @types/openlayers, но typings search npm:openlayers ничего не возвращает.Предназначен ли он для использования отдельно от инструмента набора текста? Например. установлен напрямую с помощью npm?
R

Ronald Zarīts

6 лет назад

Ответов: 3

Не удается запустить мой проект Node.js Typescript TypeError [ERR_UNKNOWN_FILE_EXTENSION]: неизвестное расширение файла «.ts» для /app/src/App.ts

Когда я пытаюсь запустить свое приложение на Heroku, я получаю следующую трассировку стека. Это просто базовое ts.app, как вы видите с ts-node и nodemon. Если вам нужна дополнительная информация, просто скажите мне это, потому что это мой первый пост. Мне очень интересно, каким будет ответ.2020-05-30T00:03:12.201106+00:00 heroku[web.1]: Starting process with command `npm start` 2020-05-30T00:03:14.405285+00:00 app[web.1]: 2020-05-30T00:03:14.405303+00:00 app[web.1]: > discordtoornamentmanager@1.0.0 start /app 2020-05-30T00:03:14.405303+00:00 app[web.1]: > ts-node src/App.ts 2020-05-30T00:03:14.405304+00:00 app[web.1]: 2020-05-30T00:03:14.833655+00:00 app[web.1]: (node:23) ExperimentalWarning: The ESM module loader is experimental. 2020-05-30T00:03:14.839311+00:00 app[web.1]: TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /app/src/App.ts 2020-05-30T00:03:14.839312+00:00 app[web.1]: at Loader.defaultGetFormat [as _getFormat] (internal/modules/esm/get_format.js:65:15) 2020-05-30T00:03:14.839314+00:00 app[web.1]: at Loader.getFormat (internal/modules/esm/loader.js:113:42) 2020-05-30T00:03:14.839315+00:00 app[web.1]: at Loader.getModuleJob (internal/modules/esm/loader.js:244:31) 2020-05-30T00:03:14.839315+00:00 app[web.1]: at processTicksAndRejections (internal/process/task_queues.js:97:5) 2020-05-30T00:03:14.839316+00:00 app[web.1]: at Loader.import (internal/modules/esm/loader.js:178:17) 2020-05-30T00:03:14.847801+00:00 app[web.1]: npm ERR! code ELIFECYCLE 2020-05-30T00:03:14.847998+00:00 app[web.1]: npm ERR! errno 1 2020-05-30T00:03:14.848957+00:00 app[web.1]: npm ERR! discordtoornamentmanager@1.0.0 start: `ts-node src/App.ts` 2020-05-30T00:03:14.849050+00:00 app[web.1]: npm ERR! Exit status 1 2020-05-30T00:03:14.849172+00:00 app[web.1]: npm ERR! 2020-05-30T00:03:14.849254+00:00 app[web.1]: npm ERR! Failed at the discordtoornamentmanager@1.0.0 start script. 2020-05-30T00:03:14.849337+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above. 2020-05-30T00:03:14.854859+00:00 app[web.1]: 2020-05-30T00:03:14.854998+00:00 app[web.1]: npm ERR! A complete log of this run can be found in: 2020-05-30T00:03:14.855069+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2020-05-30T00_03_14_850Z-debug.log 2020-05-30T00:03:14.907689+00:00 heroku[web.1]: Process exited with status 1 2020-05-30T00:03:14.943718+00:00 heroku[web.1]: State changed from starting to crashed Это мой package.json{ "name": "discordtoornamentmanager", "version": "1.0.0", "description": "", "main": "dist/app.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "nodemon -x ts-node src/App.ts", "start": "ts-node src/App.ts" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "@types/node": "^14.0.5", "axios": "^0.19.2", "discord.js": "^12.2.0", "pg": "^8.2.1", "reflect-metadata": "^0.1.10", "typeorm": "0.2.25", "typescript": "^3.9.3", "nodemon": "^2.0.4", "ts-node": "8.10.1" } } А это мой tsconfig{ "compilerOptions": { "lib": [ "es6" ], "target": "es6", "module": "commonjs", "moduleResolution": "node", "outDir": "dist", "resolveJsonModule": true, "emitDecoratorMetadata": true, "esModuleInterop": true, "experimentalDecorators": true, "sourceMap": true }, "include": ["src/**/*.ts"], "exclude": ["node_modules", "**/*.spec.ts"] }
p

peli Pongracz

2 года назад

Ответов: 10

«Команда tsc не найдена» при компиляции машинописного текста

Я хочу установить typescript, поэтому использовал следующую команду:npm install -g typescript и тест tsc --version, но он просто показывает «команда tsc не найдена». Я пробовал много способов, предложенных в stackoverflow, github и других сайтах. но это не работает. Откуда мне знать, что typescript установлен и где он находится.моя ОС — Unix, OS X El Capitan 10.11.6, версия узла 4.4.3, версия npm 3.10.5
A

Aung Thet

5 лет назад

Ответов: 21

Typescript: невозможно использовать оператор импорта вне модуля

У меня есть файл .ts в приложении node js (последняя версия node.js от 07.10.19) с импортом модуля узла без экспорта по умолчанию. Я использую эту конструкцию: import {Class} from 'abc'; Когда я запускаю код, у меня возникает эта ошибка: Невозможно использовать оператор импорта вне модуля.В сети я вижу много решений этой проблемы (для .js), но мне это не помогает, может быть потому, что у меня есть машинописный файл. Вот мой код:import { Class } from 'abc'; module.exports = { ... execute(a : Class ,args : Array){ ... Вот мой tsconfig.json:{ "compilerOptions": { "target": "es6", "module": "commonjs", "strict": true } }
Z

Zerumi

2 года назад

Ответов: 5

Angular 5 Прокрутите вверх при каждом щелчке по маршруту

Я использую angular 5. У меня есть панель инструментов, на которой есть несколько разделов с небольшим содержимым и несколько разделов с таким большим содержимым, что я сталкиваюсь с проблемой при смене маршрутизатора при переходе наверх. Каждый раз, когда мне нужно прокрутить, чтобы перейти наверх. Может ли кто-нибудь помочь мне решить эту проблему, чтобы при смене маршрутизатора мой вид всегда оставался наверху.Заранее спасибо.
r

raihan

4 года назад

Ответов: 21

Интерфейс машинописного текста требует существования одного из двух свойств

Я пытаюсь создать интерфейс, который мог бы иметь export interface MenuItem { title: string; component?: any; click?: any; icon: string; } Можно ли установить component или click Есть ли способ сделать так, чтобы оба свойства не могли быть установлены?
N

Nix

5 лет назад

Ответов: 11

Как объявить функцию, которая выдает ошибку в Typescript

В Java я бы объявил такую ​​функцию: public boolean Test(boolean test) throws Exception { if (test == true) return false; throw new Exception(); } И я могу использовать эту функцию без обработки исключения.Если можно, то как сделать то же самое в Typescript? Компилятор скажет мне, что я не могу использовать функцию без try/catch.
T

The224

4 года назад

Ответов: 7

Что такое ярлык в коде Visual Studio для console.log

Я хочу знать, что такое ярлык для console.log в коде Visual Studio?
P

Petko Kamenov

5 лет назад

Ответов: 23

Импорт машинописного текста/как против импорта/требования?

Я использую TypeScript с Express/Node.js.Для потребляющих модулей в Руководстве по TypeScript показан следующий синтаксис:импорт экспресс = требуется('экспресс');Но также файл typescript.d.ts показывает:импорт * как экспресс из "экспресс";Я также искал в блоге MSDN, но ничего не нашел.Какой из них более правильный на начало 2016 года? Каковы различия между ними, если таковые имеются?Где лучше всего найти информацию о последнем синтаксисе, чтобы я мог найти эту информацию в будущем?
A

Adam Thompson

6 лет назад

Ответов: 2

Typescript — расширение класса ошибок

Я пытаюсь вызвать пользовательскую ошибку с моим именем класса "CustomError", напечатанным в консоли вместо "Error", безуспешно:class CustomError extends Error { constructor(message: string) { super(`Lorem "${message}" ipsum dolor.`); this.name = 'CustomError'; } } throw new CustomError('foo'); Вывод: Неперехваченная ошибка: Lorem "foo" ipsum dolor.Что я ожидаю: Uncaught CustomError: Lorem "foo" ipsum dolor.Интересно, можно ли это сделать, используя только TS (без использования прототипов JS)?
d

darksoulsong

5 лет назад

Ответов: 8

Как на самом деле развернуть приложение Angular 2 + Typescript + systemjs?

На angular.io есть руководство для быстрого старта, в котором используются typescript и systemjs. Теперь, когда у меня запущено это мини-приложение, как мне создать что-то развертываемое? Я не смог найти никакой информации об этом.Нужны ли мне дополнительные инструменты, дополнительные настройки в System.config?(Я знаю, что мог бы использовать webpack и создать один bundle.js, но я хотел бы использовать systemjs, поскольку он используется в руководстве)Может ли кто-нибудь поделиться своим процессом сборки с этой настройкой (Angular 2, TypeScript, systemjs)
B

Brian G. Bell

6 лет назад

Ответов: 6

useMemo против useEffect + useState

Есть ли преимущества в использовании useMemo (например, для интенсивного вызова функции) вместо комбинации useEffect и useState?Вот два пользовательских хука, которые на первый взгляд работают абсолютно одинаково, за исключением того, что useMemoвозвращает значение null при первом рендеринге:useEffect & useStateимпорт {дорогойрасчет} из "foo"; функция useCalculate (someNumber: число): число { const [результат, setResult] = useState(null); использоватьЭффект(() => { setResult (дорогой расчет (некоторое число)); }, [какое-то число]); вернуть результат; } useMemoимпорт {дорогойрасчет} из "foo"; функция useCalculateWithMemo (someNumber: число): число { вернуть useMemo(() => { вернуть дорогой расчет (некоторое число); }, [какое-то число]); }; Оба вычисляют результат каждый раз, когда их параметр someNumber изменяется, где задействуется мемоизация useMemo?
B

Bennett Dams

3 года назад

Ответов: 3

2022 WebDevInsider