[{"data":1,"prerenderedAt":578},["ShallowReactive",2],{"navigation":3,"-guide-data-types-type-inference":239,"-guide-data-types-type-inference-surround":575},[4,159],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"指南","\u002Fguide","00.guide\u002F00.index",[9,11,16,21,53,84,116,142],{"title":5,"path":6,"stem":7,"icon":10},"lucide:book",{"title":12,"path":13,"stem":14,"icon":15},"快速开始","\u002Fguide\u002Fgetting-started","00.guide\u002F01.getting-started","lucide:rocket",{"title":17,"path":18,"stem":19,"icon":20},"基础语法","\u002Fguide\u002Fbasic-syntax","00.guide\u002F02.basic-syntax","lucide:code-2",{"title":22,"path":23,"stem":24,"children":25,"icon":27},"数据类型","\u002Fguide\u002Fdata-types","00.guide\u002F03.data-types\u002F00.index",[26,28,33,38,43,48],{"title":22,"path":23,"stem":24,"icon":27},"lucide:database",{"title":29,"path":30,"stem":31,"icon":32},"基本类型","\u002Fguide\u002Fdata-types\u002Fbasic_types","00.guide\u002F03.data-types\u002F01.basic_types","lucide:type",{"title":34,"path":35,"stem":36,"icon":37},"复合类型","\u002Fguide\u002Fdata-types\u002Fcomposite_types","00.guide\u002F03.data-types\u002F02.composite_types","lucide:layers",{"title":39,"path":40,"stem":41,"icon":42},"类型推导","\u002Fguide\u002Fdata-types\u002Ftype_inference","00.guide\u002F03.data-types\u002F03.type_inference","lucide:brain-circuit",{"title":44,"path":45,"stem":46,"icon":47},"结构体","\u002Fguide\u002Fdata-types\u002Fstruct","00.guide\u002F03.data-types\u002F04.struct","lucide:box-select",{"title":49,"path":50,"stem":51,"icon":52},"内建类型表面","\u002Fguide\u002Fdata-types\u002Fbuilt-in-surface","00.guide\u002F03.data-types\u002F05.built-in-surface","lucide:wrench",{"title":54,"path":55,"stem":56,"children":57,"icon":59},"流程控制","\u002Fguide\u002Fcontrol-flow","00.guide\u002F04.control-flow\u002F00.index",[58,60,64,69,74,79],{"title":54,"path":55,"stem":56,"icon":59},"lucide:git-branch",{"title":61,"path":62,"stem":63,"icon":59},"if 表达式","\u002Fguide\u002Fcontrol-flow\u002Fif-expressions","00.guide\u002F04.control-flow\u002F01.if-expressions",{"title":65,"path":66,"stem":67,"icon":68},"for 循环","\u002Fguide\u002Fcontrol-flow\u002Ffor-loops","00.guide\u002F04.control-flow\u002F02.for-loops","lucide:repeat",{"title":70,"path":71,"stem":72,"icon":73},"break 和 continue","\u002Fguide\u002Fcontrol-flow\u002Fbreak-continue","00.guide\u002F04.control-flow\u002F03.break-continue","lucide:skip-forward",{"title":75,"path":76,"stem":77,"icon":78},"return","\u002Fguide\u002Fcontrol-flow\u002Freturn","00.guide\u002F04.control-flow\u002F04.return","lucide:corner-up-left",{"title":80,"path":81,"stem":82,"icon":83},"注意事项","\u002Fguide\u002Fcontrol-flow\u002Fnotes","00.guide\u002F04.control-flow\u002F05.notes","lucide:alert-triangle",{"title":85,"path":86,"stem":87,"children":88,"icon":90},"函数","\u002Fguide\u002Ffunctions","00.guide\u002F05.functions\u002F00.index",[89,91,96,101,106,111],{"title":85,"path":86,"stem":87,"icon":90},"lucide:braces",{"title":92,"path":93,"stem":94,"icon":95},"基础函数","\u002Fguide\u002Ffunctions\u002Fbasic-functions","00.guide\u002F05.functions\u002F01.basic-functions","lucide:function-square",{"title":97,"path":98,"stem":99,"icon":100},"参数与默认值","\u002Fguide\u002Ffunctions\u002Fadvanced-parameters","00.guide\u002F05.functions\u002F02.advanced-parameters","lucide:settings-2",{"title":102,"path":103,"stem":104,"icon":105},"匿名函数","\u002Fguide\u002Ffunctions\u002Fclosures","00.guide\u002F05.functions\u002F03.closures","lucide:curly-braces",{"title":107,"path":108,"stem":109,"icon":110},"内建函数","\u002Fguide\u002Ffunctions\u002Fbuiltin-functions","00.guide\u002F05.functions\u002F04.builtin-functions","lucide:box",{"title":112,"path":113,"stem":114,"icon":115},"main 函数","\u002Fguide\u002Ffunctions\u002Fmain-function","00.guide\u002F05.functions\u002F05.main-function","lucide:play",{"title":117,"path":118,"stem":119,"children":120,"icon":37},"模块化","\u002Fguide\u002Fmodules","00.guide\u002F06.modules\u002F00.index",[121,122,127,132,137],{"title":117,"path":118,"stem":119,"icon":37},{"title":123,"path":124,"stem":125,"icon":126},"导出","\u002Fguide\u002Fmodules\u002Fexport","00.guide\u002F06.modules\u002F01.export","lucide:upload",{"title":128,"path":129,"stem":130,"icon":131},"导入","\u002Fguide\u002Fmodules\u002Fimport","00.guide\u002F06.modules\u002F02.import","lucide:download",{"title":133,"path":134,"stem":135,"icon":136},"最佳实践","\u002Fguide\u002Fmodules\u002Fbest-practices","00.guide\u002F06.modules\u002F03.best-practices","lucide:check-circle-2",{"title":138,"path":139,"stem":140,"icon":141},"完整示例","\u002Fguide\u002Fmodules\u002Fcomplete-example","00.guide\u002F06.modules\u002F04.complete-example","lucide:file-code-2",{"title":143,"path":144,"stem":145,"children":146,"icon":148},"高级特性概述","\u002Fguide\u002Fadvanced","00.guide\u002F07.advanced\u002F00.index",[147,149,154],{"title":143,"path":144,"stem":145,"icon":148},"lucide:zap",{"title":150,"path":151,"stem":152,"icon":153},"泛型","\u002Fguide\u002Fadvanced\u002Fgenerics","00.guide\u002F07.advanced\u002F05.generics","lucide:git-merge",{"title":155,"path":156,"stem":157,"icon":158},"类型转换","\u002Fguide\u002Fadvanced\u002Ftype-conversion","00.guide\u002F07.advanced\u002F06.type-conversion","lucide:refresh-cw",{"title":160,"path":161,"stem":162,"children":163,"icon":15},"设计","\u002Fdesign","01.design\u002F00.index",[164,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,232,235],{"title":160,"path":161,"stem":162,"icon":15},{"title":166,"path":167,"stem":168},"CST 特性","\u002Fdesign\u002Fcst-features","01.design\u002F01.cst-features",{"title":170,"path":171,"stem":172},"注释关联规则","\u002Fdesign\u002Fcomment-association","01.design\u002F02.comment-association",{"title":174,"path":175,"stem":176},"错误处理","\u002Fdesign\u002Ferror-handling","01.design\u002F03.error-handling",{"title":178,"path":179,"stem":180},"代码优化","\u002Fdesign\u002Foptimization","01.design\u002F04.optimization",{"title":182,"path":183,"stem":184},"注释保留","\u002Fdesign\u002Fcomments","01.design\u002F05.comments",{"title":186,"path":187,"stem":188},"结构体设计","\u002Fdesign\u002Fstruct-design","01.design\u002F06.struct-design",{"title":190,"path":191,"stem":192},"comparable 约束设计","\u002Fdesign\u002Fcomparable-constraint","01.design\u002F07.comparable-constraint",{"title":194,"path":195,"stem":196},"文档分层约定","\u002Fdesign\u002Fdocumentation-convention","01.design\u002F08.documentation-convention",{"title":198,"path":199,"stem":200},"类型系统总纲","\u002Fdesign\u002Ftype-system","01.design\u002F09.type-system",{"title":202,"path":203,"stem":204},"泛型系统","\u002Fdesign\u002Fgenerics-system","01.design\u002F10.generics-system",{"title":206,"path":207,"stem":208},"值语义与共享语义","\u002Fdesign\u002Fvalue-and-sharing-semantics","01.design\u002F11.value-and-sharing-semantics",{"title":210,"path":211,"stem":212},"函数与调用","\u002Fdesign\u002Ffunctions-and-calls","01.design\u002F12.functions-and-calls",{"title":214,"path":215,"stem":216},"表达式与语句","\u002Fdesign\u002Fexpressions-and-statements","01.design\u002F13.expressions-and-statements",{"title":218,"path":219,"stem":220},"模块系统","\u002Fdesign\u002Fmodule-system","01.design\u002F14.module-system",{"title":222,"path":223,"stem":224},"渲染内建","\u002Fdesign\u002Frender-intrinsics","01.design\u002F15.render-intrinsics",{"title":226,"path":227,"stem":228},"Any 设计","\u002Fdesign\u002Fany-design","01.design\u002F16.any-design",{"title":49,"path":230,"stem":231},"\u002Fdesign\u002Fbuilt-in-types-surface","01.design\u002F17.built-in-types-surface",{"title":107,"path":233,"stem":234},"\u002Fdesign\u002Fbuilt-in-functions","01.design\u002F18.built-in-functions",{"title":236,"path":237,"stem":238},"内建结构体与运行时类型","\u002Fdesign\u002Fbuilt-in-structs-and-runtime-types","01.design\u002F19.built-in-structs-and-runtime-types",{"id":240,"title":39,"body":241,"description":282,"extension":570,"meta":571,"navigation":572,"path":40,"seo":573,"stem":41,"__hash__":574},"content\u002F00.guide\u002F03.data-types\u002F03.type_inference.md",{"type":242,"value":243,"toc":560,"icon":42},"minimark",[244,248,252,273,276,317,320,340,343,368,375,390,396,411,414,417,437,440,460,467,472,502,505,532,535,538,556],[245,246,247],"p",{},"Dujie 支持局部、可解释的类型推导。",[249,250,251],"h2",{"id":251},"基本规则",[253,254,255,267,270],"ul",{},[256,257,258,262,263,266],"li",{},[259,260,261],"code",{},"let x = expr"," 只在 ",[259,264,265],{},"expr"," 类型唯一时允许推导",[256,268,269],{},"推导不会跨很远的上下文做复杂反推",[256,271,272],{},"函数返回类型必须显式写出",[249,274,275],{"id":275},"基础字面量",[277,278,283],"pre",{"className":279,"code":280,"language":281,"meta":282,"style":282},"language-dj shiki shiki-themes github-light github-dark github-dark","let age = 25;      \u002F\u002F int\nlet pi = 3.14;     \u002F\u002F float\nlet ok = true;     \u002F\u002F bool\nlet name = \"dujie\"; \u002F\u002F string\nlet ch = 'd';      \u002F\u002F rune\n","dj","",[259,284,285,293,299,305,311],{"__ignoreMap":282},[286,287,290],"span",{"class":288,"line":289},"line",1,[286,291,292],{},"let age = 25;      \u002F\u002F int\n",[286,294,296],{"class":288,"line":295},2,[286,297,298],{},"let pi = 3.14;     \u002F\u002F float\n",[286,300,302],{"class":288,"line":301},3,[286,303,304],{},"let ok = true;     \u002F\u002F bool\n",[286,306,308],{"class":288,"line":307},4,[286,309,310],{},"let name = \"dujie\"; \u002F\u002F string\n",[286,312,314],{"class":288,"line":313},5,[286,315,316],{},"let ch = 'd';      \u002F\u002F rune\n",[249,318,319],{"id":319},"容器字面量",[277,321,323],{"className":279,"code":322,"language":281,"meta":282,"style":282},"let numbers = [1, 2, 3];           \u002F\u002F list\u003Cint>\nlet names = [\"a\", \"b\"];            \u002F\u002F list\u003Cstring>\nlet scores = { \"a\": 1, \"b\": 2 };   \u002F\u002F map\u003Cstring, int>\n",[259,324,325,330,335],{"__ignoreMap":282},[286,326,327],{"class":288,"line":289},[286,328,329],{},"let numbers = [1, 2, 3];           \u002F\u002F list\u003Cint>\n",[286,331,332],{"class":288,"line":295},[286,333,334],{},"let names = [\"a\", \"b\"];            \u002F\u002F list\u003Cstring>\n",[286,336,337],{"class":288,"line":301},[286,338,339],{},"let scores = { \"a\": 1, \"b\": 2 };   \u002F\u002F map\u003Cstring, int>\n",[245,341,342],{},"要求：",[253,344,345,351,357],{},[256,346,347,350],{},[259,348,349],{},"list"," 元素类型必须一致",[256,352,353,356],{},[259,354,355],{},"map"," 的 key 类型必须一致，value 类型必须一致",[256,358,359,360,363,364,367],{},"不做 ",[259,361,362],{},"int"," \u002F ",[259,365,366],{},"float"," 混合推导",[249,369,371,374],{"id":370},"optt-推导",[259,372,373],{},"opt\u003CT>"," 推导",[277,376,378],{"className":279,"code":377,"language":281,"meta":282,"style":282},"let a = some(\"x\");   \u002F\u002F opt\u003Cstring>\nlet b = some(1);     \u002F\u002F opt\u003Cint>\n",[259,379,380,385],{"__ignoreMap":282},[286,381,382],{"class":288,"line":289},[286,383,384],{},"let a = some(\"x\");   \u002F\u002F opt\u003Cstring>\n",[286,386,387],{"class":288,"line":295},[286,388,389],{},"let b = some(1);     \u002F\u002F opt\u003Cint>\n",[245,391,392,395],{},[259,393,394],{},"none"," 不能独立推出类型：",[277,397,399],{"className":279,"code":398,"language":281,"meta":282,"style":282},"let x = none         \u002F\u002F 不合法\nlet y: opt\u003Cstring> = none\n",[259,400,401,406],{"__ignoreMap":282},[286,402,403],{"class":288,"line":289},[286,404,405],{},"let x = none         \u002F\u002F 不合法\n",[286,407,408],{"class":288,"line":295},[286,409,410],{},"let y: opt\u003Cstring> = none\n",[249,412,413],{"id":413},"无法独立推导的情况",[245,415,416],{},"这些表达式单独使用时必须依赖上下文或显式类型：",[277,418,420],{"className":279,"code":419,"language":281,"meta":282,"style":282},"let a = []\nlet b = {}\nlet c = none\n",[259,421,422,427,432],{"__ignoreMap":282},[286,423,424],{"class":288,"line":289},[286,425,426],{},"let a = []\n",[286,428,429],{"class":288,"line":295},[286,430,431],{},"let b = {}\n",[286,433,434],{"class":288,"line":301},[286,435,436],{},"let c = none\n",[245,438,439],{},"例如：",[277,441,443],{"className":279,"code":442,"language":281,"meta":282,"style":282},"let a: list\u003Cint> = []\nlet b: map\u003Cstring, int> = {}\nlet c: opt\u003Cstring> = none\n",[259,444,445,450,455],{"__ignoreMap":282},[286,446,447],{"class":288,"line":289},[286,448,449],{},"let a: list\u003Cint> = []\n",[286,451,452],{"class":288,"line":295},[286,453,454],{},"let b: map\u003Cstring, int> = {}\n",[286,456,457],{"class":288,"line":301},[286,458,459],{},"let c: opt\u003Cstring> = none\n",[249,461,463,466],{"id":462},"if-表达式",[259,464,465],{},"if"," 表达式",[245,468,469,471],{},[259,470,465],{}," 两个分支的结果类型必须一致：",[277,473,475],{"className":279,"code":474,"language":281,"meta":282,"style":282},"let label = if ok {\n    \"yes\"\n} else {\n    \"no\"\n}\n",[259,476,477,482,487,492,497],{"__ignoreMap":282},[286,478,479],{"class":288,"line":289},[286,480,481],{},"let label = if ok {\n",[286,483,484],{"class":288,"line":295},[286,485,486],{},"    \"yes\"\n",[286,488,489],{"class":288,"line":301},[286,490,491],{},"} else {\n",[286,493,494],{"class":288,"line":307},[286,495,496],{},"    \"no\"\n",[286,498,499],{"class":288,"line":313},[286,500,501],{},"}\n",[245,503,504],{},"这类不合法：",[277,506,508],{"className":279,"code":507,"language":281,"meta":282,"style":282},"let x = if ok {\n    1\n} else {\n    \"no\"\n}\n",[259,509,510,515,520,524,528],{"__ignoreMap":282},[286,511,512],{"class":288,"line":289},[286,513,514],{},"let x = if ok {\n",[286,516,517],{"class":288,"line":295},[286,518,519],{},"    1\n",[286,521,522],{"class":288,"line":301},[286,523,491],{},[286,525,526],{"class":288,"line":307},[286,527,496],{},[286,529,530],{"class":288,"line":313},[286,531,501],{},[249,533,534],{"id":534},"不做的推导",[245,536,537],{},"当前不做这些事情：",[253,539,540,547,553],{},[256,541,542,363,544,546],{},[259,543,362],{},[259,545,366],{}," 混合运算自动提升",[256,548,549,550],{},"因为空字面量推不出类型时自动落成 ",[259,551,552],{},"any",[256,554,555],{},"从赋值目标反推复杂泛型函数实参",[557,558,559],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":282,"searchDepth":295,"depth":295,"links":561},[562,563,564,565,567,568,569],{"id":251,"depth":295,"text":251},{"id":275,"depth":295,"text":275},{"id":319,"depth":295,"text":319},{"id":370,"depth":295,"text":566},"opt\u003CT> 推导",{"id":413,"depth":295,"text":413},{"id":462,"depth":295,"text":61},{"id":534,"depth":295,"text":534},"md",{"icon":42},{"icon":42},{"title":39,"description":282},"3McFfh2qp393V6PHkivonnEj3fCpl7uyJNvWpuqHIYA",[576,577],{"title":34,"path":35,"stem":36,"description":282,"icon":37,"children":-1},{"title":44,"path":45,"stem":46,"description":282,"icon":47,"children":-1},1776981318958]