@typescript_ru

Страница 22 из 669
Dreamerinnoise
14.07.2016
14:16:11
проблема была с редаксом, когда начал эти библиотеки пытаться собирать вместе, получалось со скрипом. тут определение отклеилось, там аутдейтед... Пришлось ручками залезать и править.

Vasiliy
14.07.2016
14:16:43
хм, это недавно было? у меня норм все, вот что использовал https://gist.github.com/vyorkin/63f5500cc46ba206569f7bdd956df772

Aleh
14.07.2016
14:17:56
с самим редаксом вроде ж все отлично https://github.com/reactjs/redux/blob/master/index.d.ts

прямо вот вообще дергаться не надо

Google
Aleh
14.07.2016
14:18:29
а тайпинг в typings битый был, да

Dreamerinnoise
14.07.2016
14:18:59
с самим редаксом вроде ж все отлично https://github.com/reactjs/redux/blob/master/index.d.ts
с самим да, а со всякими redux-thunk, react-router-redux были проблемы

Vasiliy
14.07.2016
14:18:59
кстати, да, надо мне убрать его из typings.json

Aleh
14.07.2016
14:21:11
вообще да, установка d.ts всех пока еще некомфортна ни разу

проще всего скопировать, руками поправить, добавить default экспорты и в гит закинуть

для RN я забил и сам описываю

чисто кидаю компоненты которые нужны

hlomzik
14.07.2016
14:46:02
ну вот для indexedDB кривые тайпинги. что с этим делать?

error TS2339: Property 'result' does not exist on type 'EventTarget'.

Aleh
14.07.2016
14:51:23
самому описывать

ну либо any, а далее указывать тип

Dreamerinnoise
14.07.2016
15:14:57
error TS2339: Property 'result' does not exist on type 'EventTarget'.
// This works on all devices/browsers, and uses IndexedDBShim as a final fallback interface IDBEnvironment { mozIndexedDB: IDBFactory; webkitIndexedDB: IDBFactory; shimIndexedDB: IDBFactory; } var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB; // Open (or create) the database let openRequest = indexedDB.open("MyDatabase", 1); // Create the schema openRequest.onupgradeneeded = function() { let db = openRequest.result; let store = db.createObjectStore("MyObjectStore", {keyPath: "id"}); let index = store.createIndex("NameIndex", ["name.last", "name.first"]); }; openRequest.onsuccess = function() { // Start a new transaction let db = openRequest.result; let tx = db.transaction("MyObjectStore", "readwrite"); let store = tx.objectStore("MyObjectStore"); let index = store.index("NameIndex"); // Add some data store.put({id: 12345, name: {first: "John", last: "Doe"}, age: 42}); store.put({id: 67890, name: {first: "Bob", last: "Smith"}, age: 35}); // Query the data let getJohn = store.get(12345); let getBob = index.get(["Smith", "Bob"]); getJohn.onsuccess = function() { console.log(getJohn.result.name.first); // => "John" }; getBob.onsuccess = function() { console.log(getBob.result.name.first); // => "Bob" }; // Close the db when the transaction is done tx.oncomplete = function() { db.close(); }; } немного исправленный пример отсюда https://gist.github.com/BigstickCarpet/a0d6389a5d0e3a24814b как-то так.

Roman
15.07.2016
07:07:14
@chicoxyzzy зашел попробовать тут поспрашивать а ты уже :) спасибо. переписываю на TS

Google
hlomzik
15.07.2016
10:01:07
а как-то можно ts-loader’у присунуть резолвинг модулей из вебпака? или он им и пользуется? vs code у меня ругается, что модуль не найден: import db from ‘db’, при этом у меня указан resolve.root в конфиге вебпака

Aleh
15.07.2016
10:02:23
ts-loader то может, это у тебя vscode не может

ну и сам по себе ts плохо дружит с webpack, простой способ - в ts 2 это path mapping resolution

https://github.com/Microsoft/TypeScript/issues/5039

hlomzik
15.07.2016
10:03:23
таки проблема резолвинга: (17,20): error TS2307: Cannot find module 'db’.

а в ts@1.8?)

Aleh
15.07.2016
10:04:19
никак

hlomzik
15.07.2016
10:04:26
я переписываю модуль на js, там это работало

ииэх ( кто ж так лоадеры пишет?

Aleh
15.07.2016
10:04:40
ts пытается понять тип db

и не может, потому что не знает где искать его

можешь файл db.d.ts положить в корень

hlomzik
15.07.2016
10:05:10
хм… попробую

Aleh
15.07.2016
10:05:11
или в общем файле declarations.d.ts или как вы его у себя называете определить

hlomzik
15.07.2016
10:06:20
о, а он его должен был найти, если бы он был db.ts, но он db.js. попробую и его переписать

я пробую переходить на ts маленькими кусками

Aleh
15.07.2016
10:16:47
все правильно)

в ts 2 есть allowJs, я правда его не тестил еще

не на чем)

hlomzik
15.07.2016
10:20:50
тааак… а 1.8 подключить js модуль не сможет?

Google
Aleh
15.07.2016
10:22:44
нет

Vasiliy
15.07.2016
10:26:07
в ts 2 есть allowJs, я правда его не тестил еще
пробовал allowJs – норм работает

Aleh
15.07.2016
10:26:41
типы из jsdoc?

Vasiliy
15.07.2016
10:27:34
в смысле он просто компилирует js-файлы с этим флагом – мне этого достаточно было

Sergey
15.07.2016
22:23:19
Нужна подсказка. В bluebird пользуюсь методом .using. При компиляции получаю Property 'using' does not exist on type 'PromiseConstructor'. Как я понял, так происходит, потому что в https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/bluebird/bluebird.d.ts нет описания этого метода. Вопрос: как его добавить? Так не работает (получаю ту же ошибку): import * as Promise from 'bluebird' declare module 'bluebird' { interface PromiseConstructor { using(): any } } А так "работает" (но чую, что есть более правильный способ): declare global { interface PromiseConstructor { using(): any } } Как быть?

Ҫѐҏӗѫӑ
17.07.2016
10:22:51
@mkusher это косяк, пили PR

https://github.com/kangax/compat-table/blob/gh-pages/data-esnext.js#L189-L196 сюда надо добавить строку typescript: typescript.asyncawait,

но можно и уточнить что значит этот коммент https://github.com/kangax/compat-table/blob/gh-pages/data-esnext.js#L192

коммент добавил злойрок вот тут https://github.com/kangax/compat-table/commit/98b16bc1c77c01e2444fad85967bf97fea6f6991

Aleh
17.07.2016
14:41:14
чет непонятно, в одном месте needs generators support - да, но это ж не только arrow, а в другом buggy output

Sergey
17.07.2016
20:11:19
А ты промисы используешь подключая bluebird или через глобальный Promise?
Не очень понял вопрос. Перед декларацией пишу import * as Promise from 'bluebird'. Надо как-то по-другому?

Aleh
18.07.2016
05:41:00
Нет) просто может ты использовал через глобальный промис

Aleh
18.07.2016
06:54:07
Что значит buggy output?
вот непонятно, ссылок там на issue нет. Я чет сходу не нашел каких-то issue с неправильным выводом

хотя вижу несколько issue, в которых говорится, что всякие там graphql не могут работать с ts-овыми async/await, но могут с babel

Dreamerinnoise
18.07.2016
07:01:22
Наверное потому что создавались с учетом того как выводит babel

Google
Anatoly
18.07.2016
09:12:50
Ребят, а нормальная практика, вот есть приватный метод у какого-то класса и нужные всякие функции вспомогательные для этого метода, можно прямо в методе их зафигарить или лучше выносить в такие же приватные методы? )

private createGrid(container: HTMLElement, data: any, chart: any): void { const updateGridData = (data) => {...}; updateGridData(data); }

Aleh
18.07.2016
09:21:55
вполне вероятно, что тебе эти приватные методы надо вынести вообще в отдельный класс, который инъектить в исходный

Anatoly
18.07.2016
09:22:12
не методы, а функции наверное?

Aleh
18.07.2016
09:22:26
ну, пока не методы, но вместе с приватным методом

тут конечно недостаточно инфы

чисто технически лучше вынести в приватные методы, чтобы функции каждый раз не создавались, но это вероятнее всего спички. Ну и плюс, если вам требуется там еще несколько функций, то как вы все это дело тестируете?

Anatoly
18.07.2016
10:26:17
Там где это требуется - не тестируется ) Ну тогда вынесу в приват всё ) Спасибо

Dreamerinnoise
18.07.2016
18:26:57
Кто нибудь делал hot reload в электроне да под тайпскриптом?

Не работает ☹️

Отбой. я нуб

Самый корневой компонент не знает как обновиться.

Vasiliy
18.07.2016
18:42:07
а у тебя react-hot-loader?

у меня просто chrome extension, не электрон

Dreamerinnoise
18.07.2016
18:42:17
Vasiliy
18.07.2016
18:42:42
хм, мб там своя специфика, сорри, сходу не скажу

Dreamerinnoise
18.07.2016
18:43:10
entry: [ 'webpack-hot-middleware/client?reload=true&path=http://localhost:9000/__webpack_hmr', 'webpack/hot/only-dev-server', './src/index', ], { test: /\.ts(x?)$/, loaders: [ 'react-hot', // 'babel-loader?presets[]=es2015', 'ts-loader?configFileName=tsconfig.json', ], exclude: [/node_modules/, /\.(spec|e2e)\.ts(x?)$/], }

Да, телеграм очень удобен для кодовставки...

Ну как-то вот так у меня. работает.

Vasiliy
18.07.2016
18:58:43
будешь делать свой стартер под электрон?)

Google
Vasiliy
18.07.2016
18:59:14
я замучу стартер для chrome app / extension с ts скоро, надо просто вытащить его из проекта

Dreamerinnoise
18.07.2016
19:01:01
А с вебпаком нету

Nikolay
19.07.2016
13:56:50
кто-нибудь знает, есть возможность в typings указать свой репозиторий?

Ҫѐҏӗѫӑ
19.07.2016
13:58:17
он умеет в что угодно https://github.com/typings/typings#sources

Nikolay
19.07.2016
14:02:08
это ок, да, но я не вижу опции добавить еще один source

в локальной сети есть форк DefinitelyTyped с .d.ts приватных пакетов

есть возможность его использовать?

Artur
19.07.2016
14:03:54
typings install github:path/to-repo —save

Nikolay
19.07.2016
14:05:03
npm-пакеты, которые хостятся на внутреннем npm-репозитории

Artur
19.07.2016
14:07:35
А это ваши пакеты?

Nikolay
19.07.2016
14:07:44
Да

Artur
19.07.2016
14:08:24
TS должен цеплять автоматом из них, специально их устанавливать не надо.

Но в package.json должен быть прописан путь к файлу типов пакета, если он не совпадает с index.d.ts

Nikolay
19.07.2016
14:09:30
d.ts самого пакета цепляются, а вот зависимости не подгружаются, вот я и думаю как это сделать через typings

Ҫѐҏӗѫӑ
19.07.2016
14:09:51
тайпингс уже почти не нужен

Страница 22 из 669