personal-pin/@types
doc.deno.land用にpersonal-pinの型定義ファイルを作成できないか試行するした
.d.ts自体作ったことが無いので時間かかるMijikko.icon
自動生成できたとしても勉強にならないのでやらない
たくさん書いたけど、exportされているやつが2つしかないのでほとんど表示されていない
{types}は要らないと思うtakker.icon
JSでJSDocを書くときのみ必要
なるほどMijikko.icon
助かります!
というか、型定義ファイルを別途作らないと型推論が効かなかったのですか?takker.icon
JSDocで書いたつもりだったのですが
doc.deno.landだとうまく表示されなかったですねMijikko.icon
自分のやり方が悪い可能性は十分ありますが
deno docやVSCodeだと問題なかった記憶
今ログを確認してみたけれど、型が駄目というよりはJSDocに書いたコメントが読み込まれなくて困っていたっぽい…?
.jsで読み込んだときの記録が残っていなかったので、後で検証しておきます
検証結果:/Mijinko-other/deno doc display test js
だめでしたね(意外にも引数の説明は読み込んでくれたけれど)
jsのみでdeno docした結果takker.icon
code:log
$ deno doc https://scrapbox.io/api/code/villagepump/personal-pin/mod.js
false None false
true None true
false None false
false None false
false None false
false None false
false None false
false None false
false None false
true None true
false None false
false None false
false None false
false None false
false None false
false None false
Defined in https://scrapbox.io/api/code/villagepump/personal-pin/mod.js:26:13
const launch: (titles, options) => unknown
ピン留め処理を開始する
@param {Iterable<string>|(()=>(Iterable<string>|Promise<Iterable<string>>))} titles
ピン留めしたいページのタイトル
@param {LaunchOptions} ? options
オプション
@return {()=>void}
後始末用函数
@typedefで定義した型はexportしてくれないみたい
.d.tsで型定義したほうが楽かも
JSの型は読み取ってくれないのかなあtakker.icon
code:mod.d.ts
/// <reference no-default-lib="true" />
/// <reference lib="esnext" />
/// <reference lib="dom" />
import { Scrapbox } from "https://raw.githubusercontent.com/scrapbox-jp/types/0.3.5/scrapbox.ts";
declare const scrapbox: Scrapbox;
export interface LaunchOptions {
/** ピン留めするプロジェクト名 既定は現在のプロジェクト名 */
project?: string;
/** ピン留め更新処理の間隔 既定は60000 */
interval?: number;
}
export type Titles =
| Iterable<string>
| (() => Iterable<string> | Promise<Iterable<string>>);
/**
* ピン留め処理を開始する
* @param {Iterable<string>|(()=>(Iterable<string>|Promise<Iterable<string>>))} titles ピン留めしたいページのタイトル
* @param {LaunchOptions} options オプション
* @return {()=>void} 後始末用函数
*/
export declare const launch: (
titles: Titles,
option?: LaunchOptions,
) => {
(): void;
};
/**
* ピン留め処理
* @param {string} project プロジェクト名
* @param {Iterable<string>|(()=>(Iterable<string>|Promise<Iterable<string>>))} titles ピン留めしたいページのタイトル
*/
declare const updatePins: (project: string, titles: Titles) => Promise<void>;
/**
* 指定したカードをpinする
* @param {HTMLLIElement} card
* @return {void}
*/
declare const pin: (card: HTMLLIElement) => void;
declare const cardList: () => HTMLUListElement[];
declare const listPins: () => void;
declare const id: "personal-pin-card";
/**
* ページカードを作る
*
* ページリストにあるときはそれをコピーし、ないときは空のページカードを作る
* @param {string} project プロジェクト名
* @param {string} title ページタイトル
* @return {HTMLLIElement}
*/
declare const makePseudoCard: (project: string, title: string) => HTMLLIElement;
/** このscriptで作成したカードを全部消す */
declare const deletePseudoCards: () => void;
declare const noEncodeChars: '@$&+=:;",';
declare const noTailChars: ':;",';
/**
* titleをURIで使える形式にEncodeする
*
* ported from https://github.com/takker99/scrapbox-userscript-std/blob/0.14.5/title.ts#L28
*
* @param {string} title 変換するtitle
* @return {string} 変換後の文字列
*/
declare const encodeTitleURI: (title: string) => string;