
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

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

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
}
}
Как быть?

Aleh
17.07.2016
08:26:26
http://kangax.github.io/compat-table/esnext/#test-async_functions_arrow_async_functions ээ, разве ts не умеет async для arrow? O.o
еще в 1.8 у меня работает


Ҫѐҏӗѫӑ
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

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

Dreamerinnoise
18.07.2016
06:48:47

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

Aleh
18.07.2016
07:04:31

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
тайпингс уже почти не нужен

Artur
19.07.2016
14:10:22
Но он не поможет