Как использовать Relay Modern (babel-plugin-relay и relay-compiler) с TypeScript?

При использовании TypeScript babel-plugin-relay и relay-compiler не анализируют наши вызовы graphql. Наши JS-файлы, сгенерированные TS, для ES2015 выглядят так:

var mutation = compat_1.graphql(_templateObject2);

И наш вывод из relay-compiler выглядит следующим образом, указывая на то, что файлы не были проанализированы:

Parsed default in 0.05s Writing default Writer time: 0.05s [0.05s compiling, 0.00s generating, 0.00s extra] Unchanged: 0 files Written default in 0.07s

Как мы можем заставить relay-compiler и babel-plugin-relay правильно работать с этими файлами?


person Freewalker    schedule 16.05.2017    source источник


Ответы (1)


И плагину, и компилятору для правильной работы нужны голые вызовы graphql. Если вызов graphql принимает объект (как приведенный выше пример принимает _templateObject2) или вызывается для другого объекта (как он вызывается в compat_1 выше), ни один инструмент не будет работать.

Чтобы исправить это, мы просто используем оператор require в старом стиле, чтобы транспилятор TS выдавал простые вызовы graphql:

const { commitMutation, graphql } = require('react-relay/compat');

Работает отлично.

person Freewalker    schedule 16.05.2017