Импорт FastClick

Я использую FastClick с FastClick.d.ts. TSC использует module: "commonjs", а я использую Webpack. Я не могу понять, как ссылаться на FastClick.

Как я могу импортировать FastClick в TypeScript? Если я сделаю это:

import {FastClick} from 'fastclick'
FastClick.attach(document.body);

Я не получаю ошибок компиляции TSC, но транспилированный код выглядит так:

var fastclick_1 = require('fastclick');
fastclick_1.FastClick.attach(document.body)

Что не работает. fastclick_1 кажется самой функцией FastClick.

Если я сделаю это:

import * as FastClick from 'fastclick'
FastClick.attach(document.body)

Я получаю ошибку компиляции Error:(6, 49) TS2339: Property 'attach' does not exist on type 'typeof fastclick', но сгенерированный JS работает:

var FastClick = require('fastclick');
FastClick.attach(document.body);

Итак, как я могу заставить работать TSC и выпущенный JS? FastClick.d.ts неправильно? Я неправильно импортирую модуль?


person Aaron Beall    schedule 25.11.2015    source источник


Ответы (2)


@basarat никогда не объединял свой запрос на извлечение. Вызов attach через нотацию скобок предотвратит ошибку TSC и выдаст правильный JS.

import * as FastClick from 'fastclick';
FastClick['attach'](document.body);

Это не идеально, но это работает.

person Courtney Christensen    schedule 05.07.2016

Является ли FastClick.d.ts неправильным

Да. Определенно типизированный - это лучшая попытка (как и большинство усилий по документации, отключенных от источника) и неправильная в этом случае.

person basarat    schedule 25.11.2015
comment
Ok. Что с этим не так? Как это сделать правильно? - person Aaron Beall; 25.11.2015
comment
Великолепно, это исправило! Можете ли вы объяснить исправление? - person Aaron Beall; 25.11.2015
comment
декларация экспортировала не ту вещь. Я экспортировал правильную вещь - person basarat; 25.11.2015